
Finding if a point is in front or behind a plane
The question is how to find, if specified point is behind a plane. And by plane I rather mean a point with a given direction.
Let's say the plane is a point A with direction dirA, and the point we want to check is B
My thoughts were to check if dot product of dirA and a vector, that represents the length from the "plane" to the point B. But the thing is that vector would need to be perpendicular to the plane, and I got no idea how to get that vector.
Is my concept right? If it is, how do I get the vector I need?

Intern
Contributor
The general prodecure would be this, as you already stated:
 vec normalA;
 vec AB = B  A;
 double dot = dot(AB, normalA);
 bool inFront = (dot > 0);
Of course you need the normal of the plane; with only one direction parameter of the plane, this task can't be solved. Which information do you have, or rather what do you mean by "point A with direction dirA"? A small sketch would be helpful and might answer the question to yourself

I actually tried doing it this way, but it didn't work.
Perhaps an explanation will be better than a picture
Try to imagine a a vertex with a normal. Then, imagine a plane that is perpendicular to that normal. Now my goal is to check if different point lies on the side that normals points at, or at the opposite one.
I think the error is in AB = B  A, since A is not perpendicular to B.
I imagine it like this. The picture itself is 2D, but it should work the same for 3D.

Intern
Contributor
A is not perpendicular to B... how can a point be perpendicular to another point?
What you've drawn is correct... if you have the normal, which is normalA in my formula, and have the points A and B, you have everything you need.
dot(normalA, AB) basically gives you a hint about the angle between the two vectors. If the vectors are perpendicular, i.e. if B lies in your plane, the dot product is 0.
It is >0 if the angle is <90° and <0 if the angle is >90°. Maybe you could try to calculate it for test values to see if it is correct.

I meant A as a plane
It actually works fine when I try with test values. I must did something wrong in the actual code.
Big thanks!
Posting Permissions
 You may not post new threads
 You may not post replies
 You may not post attachments
 You may not edit your posts

Forum Rules