Mail Archives: djgpp/1997/10/23/23:07:56
On 24 Oct 97 at 15:19, Bill Currie wrote:
> Well, I think I just figured it out for a triangle. If the three
> points defining the triangle (p1,p2 and p3) are defined so that they
> go counter-clockwise:
>
> p3
> /\
> /* \
> p1<__p_> p2
>
> and p is the point in question, p will be inside the triangle if
> (`x' is the vector cross product):
>
> (p - p1) x (p2 - p1) >= 0 &&
> (p - p2) x (p3 - p2) >= 0 &&
> (p - p3) x (p1 - p3) >= 0
Just realized that will only work for 2d triangles, for 3d ('*' is
being used as the dot operator):
((p - p1) x (p2 - p1)) * ((p3 - p1) x (p2 - p1)) >= 0 &&
((p - p2) x (p3 - p2)) * ((p3 - p1) x (p2 - p1)) >= 0 &&
((p - p3) x (p1 - p3)) * ((p3 - p1) x (p2 - p1)) >= 0
Should work for 3d ( (p3 - p1) x (p2 - p1) is the normal to the plane
defined by the triangle).
I just realized, you will still have to test whether the point is on
the plane, but I can't remember how to do that ((p - p1) * ((p3 - p1)
x (p2 - p1)) == 0 I think).
Bill
--
Leave others their otherness.
- Raw text -