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.
How to determine where a line intersects a planeSuppose 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 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 + 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 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