Point and plane
We have seen the plane equation before; a point is on a plane if the result of the plane equation is 0. To find the point on the plane closest to a test point, we must project the test point onto the normal of the plane. We then subtract this new vector from the test point to get the closest point:
Getting ready
We are going to implement two functions. The first function will test whether a point is on the surface of a plane using the plane equation. The second function will find the point on a plane closest to a given test point.
How to do it…
Perform the following steps to implement point tests for a plane:
Declare
PointOnPlane
andClosestPoint
inGeometry3D.h
:bool PointOnPlane(const Point& point, const Plane& plane); Point ClosestPoint(const Plane& plane, const Point& point);
Implement
PointOnPlane
inGeometry3D.cpp
:bool PointOnPlane(const Point& point, const Plane& plane) { float dot = Dot(point, plane.normal); // To make this more robust, use...