How to find a point on line of intersection of 2 planes?

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
9 replies · 2K views
NotASmurf
Messages
150
Reaction score
2
Hey all, for some software I'm writing a sub problem of a bigger math problem I have is that I need to find the line of intersection of two planes, One can obtain the normal via the cross product but I am stuck at how to find a point on that line as they're seems to be too many variables involved, Any help appreciated, thanks.
 
Physics news on Phys.org
"I can see that both planes will have points for which x = 0." Is there no technique? "I can see" isn't very mathamatical. But thanks.
 
What do you mean by mathematical?

This is how people solve this sort of problem by find a point and the direction vector and putting them together to find the line.

This is easily converted to code.
 
So find variables with same coefficients or if not use lowest common multiple to get them common, then eliminate a variable, set z=t and express each component in terms of t, this avoids using cross product?

What if you have 2x+2y+z=6 and 3x+3y+2z=2
multiply eqn 1 by 3 and eqn 2 by 2
then you get 6x+6y+4z=4 and 6x+6y+3z=18

then the x's cancel but so do the y's then you get a numerical answer for z?? then do you set x or y as t then?
 
Last edited:
Say you have two normal vectors, [itex]\vec{n}_1 = (a_1, b_1, c_1), \vec{n}_2 = (a_2, b_2, c_2)[/itex] as well as two position vectors [itex]\vec{p}_1 = (x_1, y_1, z_1), \vec{p}_2 = (x_2, y_2, z_2)[/itex]. The intersection of two planes defined by these vectors is all position vectors [itex]\vec{x} = (x, y, z)[/itex] that satisfy
[tex]\left\{\begin{array}{ccc}<br /> (\vec{x} - \vec{p}_1) \cdot \vec{n}_1 = 0\\<br /> (\vec{x} - \vec{p}_2) \cdot \vec{n}_2 = 0\end{array}\right..[/tex]This is equivalent to solving the linear algebra problem[tex]\left [\begin{array}{ccc}<br /> a_1 & b_1 & c_1 \\<br /> a_2 & b_2 & c_2 \end{array}\right] \left [\begin{array}{ccc}x \\ y \\ z\end{array}\right] = \left [\begin{array}{ccc}<br /> \vec{p}_1 \cdot \vec{n_1} \\<br /> \vec{p}_2 \cdot \vec{n_2} \end{array}\right][/tex] which can be written as [itex]\vec A \vec x = \vec b[/itex].

Assuming a solution exists (Rouché-Capelli theorem), the solution should be in the form [itex]\vec x = k \vec r + \vec p[/itex]. Hence [itex]\vec A (k \vec r + \vec p) = \vec b[/itex] where [itex]\vec p[/itex] is a particular solution and [itex]\vec r[/itex] is a homogeneous solution that spans the null space of [itex]\vec A[/itex]. As has been pointed out, [itex]\vec r = \vec{n}_1 \times \vec{n}_2, \vec{r} \neq \vec 0[/itex] is one such solution. In the case when the two normal vectors are parallel, then any non-zero vector spanned by the basis of one of the planes will do like say a vector projection of one of the standard unit vectors onto the plane (keep switching to find one that's non-zero).

To find a particular solution, simply remove a linearly dependent column vector and set it's corresponding variable to zero and solve the matrix equation. For instance, if the first column is linearly dependent, remove it and let [itex]x = 0[/itex]. You then solve the equation
[tex]\left [\begin{array}{ccc}<br /> b_1 & c_1 \\<br /> b_2 & c_2 \end{array}\right] \left [\begin{array}{ccc}y \\ z\end{array}\right] = \left [\begin{array}{ccc}<br /> \vec{p}_1 \cdot \vec{n_1} \\<br /> \vec{p}_2 \cdot \vec{n_2} \end{array}\right][/tex] to get a particular solution.

EDIT:
Alternatively, you can get everything by reducing the augmented matrix [itex][\vec A|\vec b][/itex] to a reduced row echelon form. Then, each leading coefficient is located on a column [itex]i[/itex]. The [itex]i[/itex]th coordinate of the particular solution is therefore the augmented element on the same row. The coordinates of the homogeneous solution is given by the negatively inverted value of the element on the same row in a linearly dependent column [itex]j[/itex], with the [itex]j[/itex]th coordinate being 1. For instance, the augmented matrix

[tex]\left [\begin{array}{ccc}<br /> 1 & 2 & 3 & 5\\<br /> 1 & 2 & 4 & 9\end{array}\right][/tex]has the reduced row echelon form
[tex]\left [\begin{array}{ccc}<br /> 1 & 2 & 0 & -7\\<br /> 0 & 0 & 1 & 4\end{array}\right][/tex] hence the full solution is
[tex]\vec x = \left [\begin{array}{ccc}<br /> -7\\0\\4\end{array}\right] + k<br /> \left [\begin{array}{ccc}<br /> -2\\1\\0\end{array}\right][/tex]
 
Last edited:
  • Like
Likes   Reactions: NotASmurf
NotASmurf said:
Hey all, for some software I'm writing a sub problem of a bigger math problem I have is that I need to find the line of intersection of two planes, One can obtain the normal via the cross product but I am stuck at how to find a point on that line as they're seems to be too many variables involved, Any help appreciated, thanks.
Let (u,v,w) be the cross product. You want to find a point (x,y,z) so that (x,y,z)+t(u,v,w) is the parametric form of the line. Determine which coordinate among u,v,w has the largest magnitude. Let us say it is u. Then set x=0 in the expressions for the two planes and solve for y and z.

Using the coordinate with the largest magnitude avoids problems with singularities.

I noticed you decided to start a new post. I hope this clarifies it for you.
 
  • Like
Likes   Reactions: NotASmurf