Proof of well-known 'Intersection Of Three Planes' formula.

Introduction & Motivation

Recently, I found out well-known formula 'Intersection between Three Planes' (Equation (22.31) of [1]) has no proof on literaly anywhere. Even (almost) the book where it is propsed[2].

So, I decided to figure out how this formula is derived.. (of course, experimentally it is wokrs very well.)

Notation

Let there be three planes on euclidean space $P_1, P_2, P_3$ which intersect in a point. If we let there normals as $n_1=(a_1, b_1, c_1), n_2=(a_2, b_2, c_2), n_3=(a_3, b_3, c_3)$, they must be linearly independent.

Also, let the planes $P_1, P_2, P_3$ as the system of equation like below : 

$$\begin{cases} a_1x+b_1y+c_1z+d_1=0 \\ a_2x+b_2y+c_2z+d_2=0 \\ a_3x+b_3y+c_3z +d_3=0 \end{cases}$$

Proof

A. Solve problem with Linear Algebra.

To find a intersection point by linear algebra, write system of equations as matrix form :
$$\begin{bmatrix}a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} -d_1 \\ -d_2 \\ -d_3 \end{bmatrix}$$

$$-\begin{bmatrix}a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} d_1 \\ d_2 \\ d_3 \end{bmatrix}$$

For conciseness, I'll write determinant of coefficient matrix as below : 

$$DET=\begin{vmatrix} a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ \end{vmatrix}$$  

Since that, three planes are met in a point (linearly independent)

$$DET \neq 0$$

By Cramer's Rule,

$$(-x)=\frac{\begin{vmatrix} \color{red}{d_1} & b_1 & c_1 \\ \color{red}{d_2} & b_2 & c_2 \\ \color{red}{d_3} & b_3 & c_3 \\ \end{vmatrix}}{DET}, (-y)=\frac{\begin{vmatrix} a_1 & \color{red}{d_1} & c_1 \\ a_2 & \color{red}{d_2} & c_2 \\ a_3 & \color{red}{d_3} & c_3 \\ \end{vmatrix}}{DET}, (-z)=\frac{\begin{vmatrix} a_1 & b_1 & \color{red}{d_1} \\ a_2 & b_2 & \color{red}{d_2} \\ a_3 & b_3 & \color{red}{d_3} \\ \end{vmatrix}}{DET}$$

By cofactor expansion, 

$$(-x)=\frac{1}{DET} \left\lbrace d_1\begin{vmatrix} b2 & c2 \\ b3 & c3 \end{vmatrix} -b_1\begin{vmatrix} d2 & c2 \\ d3 & c3 \end{vmatrix} + c_1\begin{vmatrix} d2 & b2 \\ d3 & b3 \end{vmatrix} \right\rbrace \\ = \frac{1}{DET} \left\lbrace \color{purple}{A} -b_1\begin{vmatrix} d2 & c2 \\ d3 & c3 \end{vmatrix} + c_1\begin{vmatrix} d2 & b2 \\ d3 & b3 \end{vmatrix} \right\rbrace $$

$$(-y)=\frac{1}{DET} \left\lbrace a_1\begin{vmatrix} d2 & c2 \\ d3 & c3 \end{vmatrix} -d_1\begin{vmatrix} a2 & c2 \\ a3 & c3 \end{vmatrix} + c_1\begin{vmatrix} a2 & d2 \\ a3 & d3 \end{vmatrix} \right\rbrace \\ = \frac{1}{DET} \left\lbrace a_1\begin{vmatrix} d2 & c2 \\ d3 & c3 \end{vmatrix} + \color{purple}{B} + c_1\begin{vmatrix} a2 & d2 \\ a3 & d3 \end{vmatrix} \right\rbrace $$

$$(-z)=\frac{1}{DET} \left\lbrace a_1\begin{vmatrix} b2 & d2 \\ b3 & d3 \end{vmatrix} -b_1\begin{vmatrix} a2 & d2 \\ a3 & d3 \end{vmatrix} + d_1\begin{vmatrix} a2 & b2 \\ a3 & b3 \end{vmatrix} \right\rbrace \\ = \frac{1}{DET} \left\lbrace a_1\begin{vmatrix} b2 & d2 \\ b3 & d3 \end{vmatrix} -b_1\begin{vmatrix} a2 & d2 \\ a3 & d3 \end{vmatrix} + \color{purple}{C} \right\rbrace $$

By unwind 2x2 deterimants :

$$(-x) = \frac{1}{DET} \left\lbrace \color{purple}{A} - b_1(d_2c_3 - c_2d_3) + c_1(d_2b_3 - b_2d_3) \right\rbrace \\ = \frac{1}{DET} \left\lbrace \color{purple}{A} + \color{blue}{D} + \color{blue}{E} + \color{blue}{F} + \color{blue}{G} \right\rbrace $$

$$(-y) = \frac{1}{DET} \left\lbrace a_1(d_2c_3 - c_2d_3) + \color{purple}{B} - c_1(a_2d_3 - d_2a_3) \right\rbrace \\ = \frac{1}{DET} \left\lbrace \color{blue}{U} + \color{blue}{R} + \color{purple}{B} + \color{blue}{Q} + \color{blue}{H} \right\rbrace $$

$$(-z) = \frac{1}{DET} \left\lbrace a_1(b_2d_3 - d_2b_3) - b_1(a_2d_3 - d_2a_3) + \color{purple}{C} \right\rbrace \\ = \frac{1}{DET} \left\lbrace \color{blue}{L} + \color{blue}{I} + \color{blue}{M} + \color{blue}{K} + \color{purple}{C} \right\rbrace $$

B. Unwind the magic intersection formula.

Below is the formula for calculating a intersection point between three planes (from Equation (22.31) of [1])

$$p_{intersection}=\frac{(p_1 \cdot n_1)(n_2 \times n_3) + (p_2 \cdot n_2)(n_3 \times n_1) + (p_3 \cdot n_3)(n_1 \times n_2)}{\begin{vmatrix} n_1 \\  n_2 \\  n_3 \end{vmatrix} }$$

Since that $p_1, p_2, p_3$ are the point on the plane $P_1, P_2, P_3$ repectively, above can be expressed as : 
$$p_{intersection}=\frac{1}{DET} \left\lbrace (-d_1)(n_2 \times n_3) + (-d_2)(n_3 \times n_1) + (-d_3)(n_1 \times n_2) \right\rbrace $$ 

By expressing cross product with deteriminant with canonical vectors $i, j, k$, 

$$p_{intersection}=\frac{-1}{DET} \left\lbrace d_1 \begin{vmatrix} i & j & k \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ \end{vmatrix} + d_2 \begin{vmatrix} i & j & k \\ a_3 & b_3 & c_3 \\ a_1 & b_1 & c_1 \\ \end{vmatrix} + d_3 \begin{vmatrix} i & j & k \\ a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ \end{vmatrix} \right\rbrace \\ = \frac{-1}{DET} \left\lbrace d1 * \left\lbrace i\begin{vmatrix} b2 & c2 \\ b3 & c3 \end{vmatrix} -j\begin{vmatrix} a2 & c2 \\ a3 & c3 \end{vmatrix} + k\begin{vmatrix} a2 & b2 \\ a3 & b3 \end{vmatrix} \right\rbrace + \\ d2 * \left\lbrace i\begin{vmatrix} b3 & c3 \\ b1 & c1 \end{vmatrix} -j\begin{vmatrix} a3 & c3 \\ a1 & c1 \end{vmatrix} + k\begin{vmatrix} a3 & b3 \\ a1 & b1 \end{vmatrix} \right\rbrace + \\ d3 * \left\lbrace i\begin{vmatrix} b1 & c1 \\ b2 & c2 \end{vmatrix} -j\begin{vmatrix} a1 & c1 \\ a2 & c2 \end{vmatrix} + k\begin{vmatrix} a1 & b1 \\ a2 & b2 \end{vmatrix} \right\rbrace \right\rbrace $$ 
By considering $i, j, k$ as $x, y, z$ axis unit vectors, we can see that some matrices are same as Section A : 
$$= \frac{-1}{DET} \left\lbrace (\color{purple}{A} + \color{purple}{B} + \color{purple}{C}) + \\ d2 * \left\lbrace i\begin{vmatrix} b3 & c3 \\ b1 & c1 \end{vmatrix} -j\begin{vmatrix} a3 & c3 \\ a1 & c1 \end{vmatrix} + k\begin{vmatrix} a3 & b3 \\ a1 & b1 \end{vmatrix} \right\rbrace + \\ d3 * \left\lbrace i\begin{vmatrix} b1 & c1 \\ b2 & c2 \end{vmatrix} -j\begin{vmatrix} a1 & c1 \\ a2 & c2 \end{vmatrix} + k\begin{vmatrix} a1 & b1 \\ a2 & b2 \end{vmatrix} \right\rbrace \right\rbrace$$
Sadly, rest of 2x2 determinants are not directly equal to Section A, but if we unwind them...... 😂
$$= \frac{-1}{DET} \left\lbrace (\color{purple}{A} + \color{purple}{B} + \color{purple}{C}) + \\ d2 * \left\lbrace i(b_3c_1 - c_3b_1) -j(a_3c_1 - c_3a_1)+ k(a_3b_1 - b_3a_1) \right\rbrace + \\ d3 * \left\lbrace i(b_1c_2 - c_1b_2) -j(a_1c_2 - c_1a_2)+ k(a_1b_2 - b_1a_2) \right\rbrace \right\rbrace$$
$$= \frac{-1}{DET} \left\lbrace (\color{purple}{A} + \color{purple}{B} + \color{purple}{C}) + \\ ( \color{blue}{F} + \color{blue}{D} + \color{blue}{H} + \color{blue}{U} + \color{blue}{K} + \color{blue}{J}) + \\ ( \color{blue}{E} + \color{blue}{G} + \color{blue}{R} + \color{blue}{Q} + \color{blue}{L} + \color{blue}{M}) \right\rbrace $$

Conclusion?

1. The formula is completely correct as proved by linear algebra.
2. And original writers are very unkind.

References

[1] Akenine-Mo, Tomas, Eric Haines, and Naty Hoffman. "Real-time rendering." (2018), page 990.
[2] Goldman, Ronald. "Intersection of three planes." Graphics gems. 1990. 305.

댓글

이 블로그의 인기 게시물

Linux에서 특정한 디렉토리가 차지하는 용량을 효율적이고, 빠르게 계산하는 법(Fast, efficient way to calculate directory size recursively on linux)

'Index type not supported yet' error when doing QR factorization using Eigen and SuiteSparseQR