In short
Two planes in space either meet (forming a line of intersection and a dihedral angle) or are parallel. The angle between them is the angle between their normals. Parallel means the normals are parallel; perpendicular means the normals are perpendicular. A line makes an angle with a plane that is the complement of the angle it makes with the normal. All of these reduce to a single dot-product computation.
Hold a book open in front of you. The two halves of the open book are two planes, and they meet along the spine. The angle between them \u2014 the angle you see when you look at the book edge-on \u2014 is called the dihedral angle. Open the book wider and the angle grows. Close it and the angle shrinks. If you lay both halves completely flat, the angle is 180\degree and the two halves become one plane.
Every pair of non-parallel planes in three-dimensional space meets in exactly the same way: along a line, at a definite angle. The question this article answers is: given the equations of two planes, how do you compute that angle, find that line, and recognise the special cases where the planes are parallel or perpendicular?
The answer, every time, lives in the normal vectors.
Angle between two planes
Take two planes:
Their normal vectors are \vec{n_1} = (a_1, b_1, c_1) and \vec{n_2} = (a_2, b_2, c_2).
The angle between the planes is the angle between their normals \u2014 or more precisely, the acute angle between their normals (since normals can point in either direction, you always take the version between 0\degree and 90\degree).
Why is the angle between normals the same as the angle between planes? Picture two walls meeting at a corner. The normals stick out sideways from each wall. If the walls are nearly parallel, the normals are nearly parallel too, and the angle between them is small \u2014 which matches the small angle between the walls. If the walls are perpendicular, the normals are perpendicular. The normal vectors faithfully record the tilt of each plane, so the angle between tilts is the angle between normals.
From the dot product formula:
The absolute value in the numerator ensures you get the acute angle.
Angle between two planes
If \pi_1 has normal \vec{n_1} = (a_1, b_1, c_1) and \pi_2 has normal \vec{n_2} = (a_2, b_2, c_2), the acute angle \theta between them satisfies
Expanding the dot product and magnitudes explicitly:
This is the same formula you use for the angle between two vectors, except with the absolute value guaranteeing \theta \in [0\degree, 90\degree].
Conditions for parallel and perpendicular planes
Two extreme cases deserve their own names.
Parallel planes. Two planes are parallel when their normals point in the same (or opposite) direction \u2014 that is, when \vec{n_1} and \vec{n_2} are scalar multiples of each other:
When this holds, the planes have the same tilt and never meet. The angle between them is 0\degree. Examples: x + 2y - z = 5 and 2x + 4y - 2z = 3 are parallel (the second normal is twice the first).
Perpendicular planes. Two planes are perpendicular when their normals are perpendicular \u2014 when the dot product is zero:
The angle between them is 90\degree. Examples: x + y + z = 1 and x - y = 0 are perpendicular, because (1)(1) + (1)(-1) + (1)(0) = 0.
Parallel and perpendicular conditions
Two planes with normals \vec{n_1} = (a_1, b_1, c_1) and \vec{n_2} = (a_2, b_2, c_2) are:
-
Parallel if and only if \vec{n_1} \times \vec{n_2} = \vec{0}, i.e., \dfrac{a_1}{a_2} = \dfrac{b_1}{b_2} = \dfrac{c_1}{c_2}.
-
Perpendicular if and only if \vec{n_1} \cdot \vec{n_2} = 0, i.e., a_1 a_2 + b_1 b_2 + c_1 c_2 = 0.
Notice the symmetry: parallelism is detected by the cross product being zero (the normals are aligned). Perpendicularity is detected by the dot product being zero (the normals are orthogonal). The two products \u2014 dot and cross \u2014 divide the world of plane-pairs cleanly into these cases.
Line of intersection of two planes
When two non-parallel planes meet, they intersect in a straight line. Every point on that line satisfies both plane equations simultaneously. Finding the line means solving the system
This is two equations in three unknowns, so the solution is a one-parameter family \u2014 a line.
Direction of the line. The line lies in both planes, so it is perpendicular to both normals. A vector perpendicular to two given vectors is their cross product:
This immediately gives you the direction of the line of intersection, without solving any system at all.
A point on the line. To get a specific point, set one coordinate to a convenient value (often z = 0, or whichever makes the algebra cleanest) and solve the resulting 2 \times 2 system.
The full method, step by step:
- Compute \vec{d} = \vec{n_1} \times \vec{n_2}.
- If \vec{d} = \vec{0}, the planes are parallel (no line of intersection).
- Otherwise, set one variable (say z = 0) and solve the two equations for x and y. This gives a point (x_0, y_0, 0) on the line.
- Write the line in symmetric or parametric form using the point and direction.
Here is a concrete computation. Take \pi_1 : x + y + z = 6 and \pi_2 : 2x - y + z = 3.
Direction: \vec{n_1} = (1, 1, 1), \vec{n_2} = (2, -1, 1).
So \vec{d} = (2, 1, -3).
A point: Set z = 0. The system becomes x + y = 6 and 2x - y = 3. Adding: 3x = 9, so x = 3, y = 3. The point is (3, 3, 0).
The line:
Verify: at t = 1, the point is (5, 4, -3). Check \pi_1: 5 + 4 + (-3) = 6. Check \pi_2: 2(5) - 4 + (-3) = 3. Both satisfied \u2014 the point lies on both planes, confirming it is on the line of intersection.
Notice that the direction (2, 1, -3) is perpendicular to both normals: \vec{d} \cdot \vec{n_1} = 2 + 1 - 3 = 0 and \vec{d} \cdot \vec{n_2} = 4 - 1 - 3 = 0. The cross product automatically guarantees this, but checking it is a good habit.
Line of intersection of two planes
If \pi_1 has normal \vec{n_1} and \pi_2 has normal \vec{n_2}, and the planes are not parallel, then:
- The direction of the line of intersection is \vec{d} = \vec{n_1} \times \vec{n_2}.
- A point on the line is found by setting one variable to zero and solving the 2 \times 2 system.
Angle between a line and a plane
There is one more angle to compute: the angle a straight line makes with a plane. This is not the angle between two planes, and it is not the angle between two lines. It is the angle between one line and one plane.
The angle between a line and a plane is defined as the angle between the line and its projection onto the plane. Geometrically, if you imagine shining a light straight down onto the plane, the shadow of the line on the plane is its projection, and the angle between the line and its shadow is what you want.
Now, the line's direction vector is \vec{d}, and the plane's normal is \vec{n}. The angle between \vec{d} and \vec{n} is some angle \alpha. The angle between the line and the plane is not \alpha \u2014 it is 90\degree - \alpha, because the normal is perpendicular to the plane, not parallel to it.
From the dot product:
Since the angle \phi between the line and the plane satisfies \phi = 90\degree - \alpha, and \cos(90\degree - \phi') = \sin\phi':
Angle between a line and a plane
If the line has direction \vec{d} = (l, m, n) and the plane has normal \vec{n_0} = (a, b, c), the angle \phi between the line and the plane satisfies
Notice the sine, not cosine. This is because you are measuring the angle from the plane (not from the normal). The formula is identical in structure to the plane-plane angle formula, but with \sin replacing \cos \u2014 reflecting the complementary relationship between the angle to the normal and the angle to the plane.
Special cases. If \vec{d} \cdot \vec{n} = 0, then \sin\phi = 0, so \phi = 0\degree \u2014 the line is parallel to the plane (or lies in it). If \vec{d} is parallel to \vec{n}, then \sin\phi = 1, so \phi = 90\degree \u2014 the line is perpendicular to the plane.
To distinguish "parallel and not in the plane" from "actually lying in the plane," check whether a point on the line satisfies the plane equation. If the line passes through (x_0, y_0, z_0) and ax_0 + by_0 + cz_0 = d, the line lies in the plane. If ax_0 + by_0 + cz_0 \neq d, the line is parallel but offset from the plane.
There is a pleasing pattern across all the angle formulas in 3D geometry. For two planes, you compare normals (both perpendicular to their planes) and get \cos\theta. For a line and a plane, you compare a direction (in the line) with a normal (perpendicular to the plane), and the complementary relationship gives \sin\phi. For two lines, you compare directions (both along their lines) and get \cos\theta again. The same dot-product computation underlies all three \u2014 only the final trigonometric function changes depending on what you are comparing.
Worked examples
Example 1: Angle between two planes
Problem. Find the angle between \pi_1: 2x + y - z = 3 and \pi_2: x - y + 2z = 5.
Step 1. Read off the normals.
Why: in ax + by + cz = d, the triple (a, b, c) is the normal vector.
Step 2. Compute the dot product \vec{n_1} \cdot \vec{n_2}.
Why: the dot product goes into the angle formula. Its sign doesn't matter since you take the absolute value.
Step 3. Compute the magnitudes.
Why: the magnitudes go in the denominator of the cosine formula.
Step 4. Apply the formula.
Why: the absolute value ensures you get the acute angle. Since \cos\theta = 1/6 is close to zero, the angle is close to 90\degree.
Result: The angle between the planes is \cos^{-1}(1/6) \approx 80.4\degree.
The planes are nearly perpendicular. The dot product \vec{n_1} \cdot \vec{n_2} = -1 is close to zero (relative to the magnitudes), which is why the angle is close to 90\degree. If it were exactly zero, the planes would be perfectly perpendicular.
Example 2: Angle between a line and a plane
Problem. Find the angle between the line \dfrac{x - 1}{2} = \dfrac{y + 1}{1} = \dfrac{z - 3}{-2} and the plane 3x + 4y - 12z = 7.
Step 1. Extract the direction and normal.
The line has direction \vec{d} = (2, 1, -2). The plane has normal \vec{n} = (3, 4, -12).
Why: the denominators of the symmetric form give the direction ratios; the plane coefficients give the normal.
Step 2. Compute the dot product \vec{d} \cdot \vec{n}.
Why: this goes into the sine formula (not cosine \u2014 the line-plane angle uses sine).
Step 3. Compute the magnitudes.
Why: these are the denominators in the formula. Clean squares \u2014 the numbers were chosen to make the arithmetic pleasant.
Step 4. Apply the formula.
Why: 34/39 is close to 1, so the line is nearly perpendicular to the plane.
Result: The angle between the line and the plane is \sin^{-1}(34/39) \approx 60.6\degree.
A line-plane angle of about 61\degree is steep. The line is roughly two-thirds of the way between lying flat in the plane (0\degree) and standing perpendicular to it (90\degree).
Common confusions
-
"The angle between two planes can be obtuse." It cannot, by convention. You always take the acute angle (between 0\degree and 90\degree). That is why the formula uses the absolute value of the dot product.
-
"The angle between a line and a plane uses cosine." It uses sine, not cosine. The line-line and plane-plane angle formulas use cosine. The line-plane formula uses sine because you measure the angle from the plane surface, not from the normal. This is the most common sign/trig error in 3D geometry.
-
"If two planes are not parallel, they intersect in a point." No \u2014 two non-parallel planes in 3D always intersect in a line, not a point. You need three mutually non-parallel planes (with linearly independent normals) to get a single point of intersection.
-
"Perpendicular planes can't intersect." They intersect \u2014 in a line. Perpendicularity means the dihedral angle is 90\degree, not that the planes are far apart. Think of a wall meeting a floor: they are perpendicular and they definitely intersect, along the baseboard.
-
"The direction of the line of intersection is \vec{n_1} + \vec{n_2}." It is not. It is \vec{n_1} \times \vec{n_2}. The cross product finds the direction perpendicular to both normals, which is the direction that lies in both planes.
Going deeper
If you came here for the four formulas and the worked examples, you have them \u2014 you can stop here. What follows is for readers who want to see the algebra behind the line of intersection in full generality, and a brief look at the three-plane system.
The line of intersection in parametric form
Given two planes \vec{n_1} \cdot \vec{r} = d_1 and \vec{n_2} \cdot \vec{r} = d_2, the direction of the intersection line is \vec{d} = \vec{n_1} \times \vec{n_2}. But finding a specific point on the line requires solving a 2 \times 3 system, and the cleanest general recipe is worth writing out.
Set one coordinate to zero \u2014 but which one? Choose the coordinate whose component in \vec{d} is largest in absolute value (this avoids degenerate cases where the line happens to be parallel to the plane z = 0). If the largest component of \vec{d} is the z-component, set z = 0 and solve:
By Cramer's rule:
The denominator a_1 b_2 - a_2 b_1 is the z-component of \vec{n_1} \times \vec{n_2} \u2014 which is nonzero precisely because you chose the largest component. This gives you the point (x_0, y_0, 0), and the line is \vec{r} = (x_0, y_0, 0) + t\,\vec{d}.
When three planes meet at a point
Two planes intersect in a line. Add a third plane, and (generically) you get a single point. The system
has a unique solution when the determinant of the coefficient matrix is nonzero:
Geometrically, \Delta \neq 0 means the three normals are linearly independent \u2014 none of them can be written as a combination of the other two. When \Delta = 0, the three planes might intersect in a line (if they share a common direction) or might have no common point at all (if they form a triangular prism pattern). The determinant is doing the same job here that the cross product does for two planes: detecting when the geometric data is degenerate.
The dihedral angle via the cross product
There is an alternative formula for the angle between two planes using the cross product instead of the dot product:
This gives the same angle as the dot-product formula (since \sin^2\theta + \cos^2\theta = 1). In practice the dot-product version is faster because computing a dot product takes three multiplications and two additions, while a cross product takes six multiplications and three subtractions, plus a magnitude computation. But the cross-product version is occasionally more convenient when you already have \vec{n_1} \times \vec{n_2} computed (for instance, because you also need the line of intersection).
Where this leads next
You now know how planes relate to each other and to lines. The natural continuations:
- Distance Formulas for Planes \u2014 the distance from a point to a plane, foot of perpendicular, and image of a point.
- Bisector Planes \u2014 planes that bisect the angle between two given planes.
- Plane \u2014 More Forms \u2014 writing the equation of a plane through a line and a point, through two parallel lines, and other geometric setups.
- Straight Line in 3D \u2014 Equations \u2014 the symmetric, parametric, and two-plane forms of lines in space.
- Plane \u2014 Basic Equations \u2014 the general equation, the three-point form, and the intercept form.