I have just begun learning some 3d mathematics and OpenGL (trying to implement skeleton animation).

I am stuck here when reading a book(Advanced Methods in Computer Graphics). I understand the first part where it says:

A plane in three-dimensional space is uniquely defined by three non-collinear points, or equivalently, by a point \$P\$ that lies on the plane and its surface normal vector \$n\$. The equation of the plane in terms of coordinates of the three points \$P = (x_p, y_p, z_p, 1), Q = (x_q, y_q, z_q, 1), R = (x_r, y_r, z_r, 1),\$ is given by the determinant

$$\begin{bmatrix} x & y & z & 1\\ x_p & y_p & z_p & 1\\ x_q & y_q & z_q & 1\\ x_r & y_r & z_r & 1\\ \end{bmatrix} = 0 \tag{2.17}$$

From this equation of the plane, we get the condition for the coplanarity of four points \$P, Q, R, S\$:

$$\begin{bmatrix} x_p & y_p & z_p & 1\\ x_q & y_q & z_q & 1\\ x_r & y_r & z_r & 1\\ x_s & y_s & z_s & 1\\ \end{bmatrix} = 0 \tag{2.18}$$

But I don't know how they then derive these scalar triple products:

The determinant is equivalent to \$(P - Q)\cdot(r \times s) + (R-S)\cdot(p \times q)\$. The condition in Eq. 2.18 also points to the fact that the vectors \$(Q-P)\$ and \$(R-S)\$ are coplanar. Thus we can rewrite the above equation using the following scalar triple product:

$$(R-P)\cdot\left\{(Q-P)\times(S-R)\right\} = 0 \tag{2.19}$$

I know why the determinant of 4 by 4 matrix is 0, using the cofactor like so:

I use the cofactor

But how those two scalar triple product equations come up? How do we get the (P-Q)⋅(r⨯s)+(R-S)·(p⨯q) from the 4 by 4 matrix?

I know that I can do the "make a lot of zero" to get the determinant (sorry for my English, I know that the final cofactor is a scalar triple product of the three vectors on one plane, it must be zero).

But how can I get the (P-Q)⋅(r⨯s)+(R-S)·(p⨯q)?

And How can I get the final (R-P) · {(Q-P) × (S-R)}=0 from it?

I understand u·(v×w)=0, If they are all in the same plane, they must be (dot product of the line on that plane and the normal).

But why can (P-Q)⋅(r⨯s)+(R-S)·(p⨯q) turn into u·(v×w)?

  • \$\begingroup\$ When you're asked to edit a question, it's best to incorporate your edits, as though the clarified version of your question was the first version you'd ever asked. Appending edits below your original just makes a reader have to parse through multiple versions of your question, taking more time and possibly getting confused by the first version on the way. Questions never need to include greetings or signatures. You can use text and MathJax markup to reproduce the quotations in a way that's more accessible to search engines, screen readers, and translation software. I've edited to show this. \$\endgroup\$
    – DMGregory
    Aug 12, 2022 at 16:34
  • \$\begingroup\$ Overall, this looks like a question about understanding linear algebra, not a question about applying linear algebra to solve a problem unique to games. You might find you get an answer faster by asking on the Mathematics StackExchange. After all, lots of mathematicians work with plane equations, but only relatively few game developers code matrix routines from scratch when our rendering libraries often handle that for us. 😉 If you choose to post the question elsewhere, be sure to delete the copy here, as cross-posting between StackExchange sites is discouraged. \$\endgroup\$
    – DMGregory
    Aug 12, 2022 at 16:37
  • \$\begingroup\$ Thank you so much for your editing!!!Thank you!!!! I think I should keep it on here for a while, it is kind of cruel to delete someone's carefully editing by pressing a button... \$\endgroup\$ Aug 12, 2022 at 16:51
  • \$\begingroup\$ You can always copy my edits into a new question on another site, if you like. \$\endgroup\$
    – DMGregory
    Aug 12, 2022 at 17:47


You must log in to answer this question.

Browse other questions tagged .