# [Haskell-cafe] Coplanarity or Colinearity [Was: low-cost matrix rank?]

Mike Meyer mwm at mired.org
Sat Apr 25 16:26:50 UTC 2015

```On Sat, Apr 25, 2015 at 10:49 AM, Jerzy Karczmarczuk <
jerzy.karczmarczuk at unicaen.fr> wrote:

>  Many people help Mike Meyer:
>

And I do appreciate it.

>  My real problem is that I've got a list of points in R3  and want to
> decide if they determine a plane, meaning they are coplanar but not
> colinear. Similarly, given a list of points in R2, I want to verify that
> they aren't colinear. Both of these can be done by converting the list of
> points to a matrix and finding the rank of the matrix, but I only use the
> rank function in the definitions of colinear and coplanar.
>
>  Maybe there's an easier way to tackle the underlying problems. Anyone
> got a suggestion for such?
>
>
> I didn't follow this discussion, so I might have missed some essential
> issues, I apologize then. But if THIS is the problem...
>
> All these powerful universal libraries, with several hundreds of lines of
> code are important and useful, but if the problem is to find whether a list
> of pairs (x,y) is collinear or not, I presume that such program as below
> could do. I am ashamed showing something like that...
>
>
>
> *colin ((x,y):l) = all (\(c,d)->abs(px*d-py*c)<eps) q where  ((px,py):q) =
> [(ax-x,ay-y) | (ax,ay) <- l] *
> [The iterated subtraction puts the first vector at the origin. eps is the
> precision; better avoid ==0]
>

That's not far from what I wound up with, except I generalized it to work
for both 2d and 3d vectors. And yeah, I clearly got off on the wrong foot
when I turned up "test the rank of the matrix" for finding collinearity and
coplanarity.

This pretty much solves my problem. Thanks to all who helped.
-------------- next part --------------
An HTML attachment was scrubbed...