Nerd Paradise

Don't worry, I'm not selling anything. Just giving a shoutout to one of my open-source side projects:

I created a programming language for beginners and am looking for people to test it out. If you have a spare moment (particularly if you haven't programmed before) and you're interested in making 2D games, please check it out.

Home > Math > How to determine where a line intersects a plane

How to determine where a line intersects a plane

Suppose you have a line defined by two 3-dimensional points and a plane defined by three 3-dimensional points. How do you tell where the line intersects the plane?

Step 1: Convert the plane into an equation

The equation of a plane is of the form Ax + By + Cz = D.
To get the coefficients A, B, C, simply find the cross product of the two vectors formed by the 3 points. This will give you a vector that is normal to the triangle. The components of this vector are, coincidentally, the coefficients A, B, and C.
Let's call the 3 points in the plane Q, R, and S.
QR = <Rx - Qx, Ry - Qy, Rz - Qz>
QS = <Sx - Qx, Sy - Qy, Sz - Qz>

QR × QS = Normal Vector N.

A = Nx
B = Ny
C = Nz

Ax + Bx + Cx = 0 is the equation of the line with a similar tilt but shifted such that it goes through the origin (0, 0, 0). To get the value of D, shift the equation with one of the Q, R, S points.

A(x - Qx) + B(y - Qy) + C(z - Qz) = 0

You now have a Ax + By + Cz = D equation.

Step 2: Find the equation for the line

Suppose your two points are A and B (different A and B from the plane)

P(t) = A + (B - A) * t

This equation can be broken up into 3 equations for each component of the vector:
x = Ax + (Bx - Ax) * t
y = Ay + (By - Ay) * t
z = Az + (Bz - Az) * t

Step 3: Combine them and solve for t

Now you have definitions of x, y, and z in terms of a variable t. Plug these equations in for the values of x, y, and z in the equation for the plane, and solve for t. Once you get a value for t, plug it back into the equation for the line, and you'll have your point of intersection.

Potential Error/Edge Cases

  • If the 3 points are in a line rather than being a valid description of a unique plane, then the normal vector will have coefficients of 0.
  • If the line does not intersect the plane or if the line is in the plane, then plugging the equations for the line into the equation of the plane will result in an expression where t is canceled out of it completely. If the resulting expression is correct (like 0 = 0) then the line is part of the plane. Otherwise, the line is parallel with the plane.

You are visitor #020486
Get notified about new posts by following the newfangled twitter account.
Best viewed with
© 1999 Nerd Paradise