The Intersection of a Line and a Plane

Suppose you have a 3D object made of polygons and you want to determine the pixel on the screen (a plane in 3D space) where a particular vertex with position vector a should be plotted. The camera has position vector b say, and the plane representing the screen passes through the point c and has a normal vector n. How do you set about calculating r the position vector of the point of intersection of
the line joining A and B, with
the plane through C with normal vector n.
We know r must satisfy:
r = a + t (b - a)
for some t that we would like to know - if we found t we'd just plug it into the above equation and we'd have r.
We also know r must satisfy:
(r - c) . n = 0
because r lies in the plane.
Putting the two together is enough to find the value of t:
( a + t ( b - a ) - c) . n = 0
=> a . n + t ( b - a ) . n - c . n = 0 distributive property
=> t (b - a) . n = c . n - a . n
=> t = ( (c - a) . n) / ((b - a) . n) )
Found it! So plugging t into
r = a + t (b - a)
gives us r.

Add a little programming and this is our pixel. All the vector applets in this site (eg this one) use this exact method, though good programmers can do some impressive stuff with their knowledge of vectors.
The point of intersection of a line with a plane is also needed in the process known as clipping - truncating the edge of a polygon that is intersecting a plane of what is known as the viewing frustrum.


This document was created using FlexED