Step 1: Convert the plane into an equationThe 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 + By + Cz = 0 is the equation of a plane 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 lineSuppose 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 tNow 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.