Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 5 of 5

Thread: Finding if a point is in front or behind a plane

  1. #1
    Intern Newbie
    Join Date
    Feb 2014
    Posts
    38

    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?

  2. #2
    Intern Contributor Brokenmind's Avatar
    Join Date
    Feb 2014
    Location
    Aachen / Germany
    Posts
    71
    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

  3. #3
    Intern Newbie
    Join Date
    Feb 2014
    Posts
    38
    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.


  4. #4
    Intern Contributor Brokenmind's Avatar
    Join Date
    Feb 2014
    Location
    Aachen / Germany
    Posts
    71
    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.

  5. #5
    Intern Newbie
    Join Date
    Feb 2014
    Posts
    38
    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
  •