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

  • Thread starter NotASmurf
  • Start date
  • #1
146
2

Main Question or Discussion Point

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 im stuck at how to find a point on that line as they're seems to be too many variables involved, Any help appreciated, thanks.
 

Answers and Replies

  • #3
146
2
No, it's a personal one, it's for a game.
 
  • #5
146
2
"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.
 
  • #6
11,808
5,431
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.
 
  • #7
146
2
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:
  • #8
137
5
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}
(\vec{x} - \vec{p}_1) \cdot \vec{n}_1 = 0\\
(\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}
a_1 & b_1 & c_1 \\
a_2 & b_2 & c_2 \end{array}\right] \left [\begin{array}{ccc}x \\ y \\ z\end{array}\right] = \left [\begin{array}{ccc}
\vec{p}_1 \cdot \vec{n_1} \\
\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}
b_1 & c_1 \\
b_2 & c_2 \end{array}\right] \left [\begin{array}{ccc}y \\ z\end{array}\right] = \left [\begin{array}{ccc}
\vec{p}_1 \cdot \vec{n_1} \\
\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}
1 & 2 & 3 & 5\\
1 & 2 & 4 & 9\end{array}\right][/tex]has the reduced row echelon form
[tex]\left [\begin{array}{ccc}
1 & 2 & 0 & -7\\
0 & 0 & 1 & 4\end{array}\right][/tex] hence the full solution is
[tex]\vec x = \left [\begin{array}{ccc}
-7\\0\\4\end{array}\right] + k
\left [\begin{array}{ccc}
-2\\1\\0\end{array}\right]
[/tex]
 
Last edited:
  • Like
Likes NotASmurf
  • #9
146
2
Thanks everyone
 
  • #10
mathman
Science Advisor
7,823
433
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 im 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 NotASmurf

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

Replies
1
Views
4K
Replies
13
Views
3K
Replies
3
Views
35K
  • Last Post
Replies
3
Views
3K
Replies
3
Views
11K
  • Last Post
Replies
9
Views
15K
  • Last Post
Replies
2
Views
8K
Replies
3
Views
11K
Replies
4
Views
4K
  • Last Post
Replies
2
Views
11K
Top