I'm reading section 6.1 (Determinants) of the book Fundamentals of Computer Graphics (5th Ed), in regards to the definition of the determinant:

\begin{align} |\textbf{ab}| &= |(x_a \textbf{x} + y_a \textbf{y})(x_b \textbf{x} + y_b \textbf{y})|\\ &= x_a x_b|\textbf{xx}| + x_a y_b |\textbf{xy}| + y_a x_b|\textbf{yx}| + y_a y_b|\textbf{yy}| \end{align}

where the following have been declared beforehand:

$$|(k \textbf{a})\textbf{b}| = |\textbf{a}(k \textbf{b})| = k|\textbf{ab}|$$ $$|(\textbf{a}+k \textbf{b})\textbf{b}| = |\textbf{a}(\textbf{b} + k\textbf{a})| = |\textbf{ab}|$$ $$| \textbf{a}(\textbf{b} + \textbf{c})| = |\textbf{ab}| + |\textbf{ac}|$$

First, I don't know how it's legal to just multiply out the two vectors $ \textbf{a}$ and $ \textbf{b}$ like that inside a determinant, but more importantly, even if I assume that, I get

\begin{align} |\textbf{ab}| &= |(x_a \textbf{x} + y_a \textbf{y})(x_b \textbf{x} + y_b \textbf{y})|\\ &= |x_a x_b\textbf{xx} + x_a y_b \textbf{xy} + y_a x_b\textbf{yx} + y_a y_b\textbf{yy}| \end{align}

but it seems like I'd need something like: $$|\textbf{ab} + \textbf{ac}| = |\textbf{ab}| + |\textbf{ac}|$$

to be able to get to that second line with the individual $|\textbf{xx}|$ type terms. Am I just missing something here?


I finally figured out why this is ok, but wanted to leave accepted answer below as it has useful info. Anyway, for posterity, here it is. We'll need both \begin{align} |\textbf{a}(\textbf{b} + \textbf{c})| &= |\textbf{ab}| + |\textbf{ac}| \end{align} and \begin{align} |(\textbf{b} + \textbf{c})\textbf{a}| = |\textbf{ba}| + |\textbf{ca}| \end{align} in addition to the first identity above in the original post. Figure 6.5 of the text shows the geometry behind both of these for intuition. Then, let \begin{align*} \textbf{a} &= (x_a \textbf{x} + y_a \textbf{y}) \\ \textbf{b} &= x_b \textbf{x} \\ \textbf{c} &= y_b \textbf{y} \end{align*} so that, applying (1) followed by (2), we have \begin{align*} |(x_a \textbf{x} + y_a \textbf{y})(x_b \textbf{x} + y_b \textbf{y})| &= |\textbf{a}(\textbf{b} + \textbf{c})| \\ &= |(x_a \textbf{x} + y_a \textbf{y})x_b \textbf{x}| + |(x_a \textbf{x} + y_a \textbf{y})y_b \textbf{y}| \\ &= |x_a x_b \textbf{xx}| + |y_a x_b \textbf{yx}| + |x_a y_b \textbf{xy}| + |y_a y_b \textbf{yy}| \\ &= x_a x_b |\textbf{xx}| + x_a y_b |\textbf{xy}| + y_a x_b |\textbf{yx}| + y_a y_b |\textbf{yy}| \end{align*} where we used the first identity $|(k \textbf{a})\textbf{b}| = k|\textbf{ab}|$ to pull out the coefficients. This is nice because we're not using e.g. FOIL for "multiplying out the two vectors" as I had originally supposed (even though it looks like that). All we're doing is just applying identities.

  • $\begingroup$ Is there a definition of what $|\boldsymbol{a}\boldsymbol{b}|$ expands to in the book? As far as I am aware this is non-standard notation. I would have expected the argument of the determinant to be a matrix, I am not sure what the object $\boldsymbol{a}\boldsymbol{b}$ is. Is it supposed to be $\boldsymbol{a}\boldsymbol{b}^T$? $\endgroup$
    – lightxbulb
    Jun 8, 2022 at 17:11
  • $\begingroup$ @lightxbulb Yes that was my confusion as well. a and b are definitely declared to be vectors, so I thought perhaps it was assuming that |ab| meant e.g. the 2x2 matrix where a is first row, b is second row, but then when they showed that FOIL binomial expansion, it became unclear. And yes I also thought maybe they were just being sloppy and really meant ab^T but that would just end up being the dot product so I really don't get it. And no, there's isn't a definition beyond what is shown above. $\endgroup$
    – James B
    Jun 8, 2022 at 17:39

1 Answer 1


I think they just mean $\boldsymbol{a}\boldsymbol{b} = \begin{bmatrix} (x_a \boldsymbol{x} + y_a \boldsymbol{y}) & (x_b \boldsymbol{x} + y_b \boldsymbol{y}) \end{bmatrix}$, where the vectors are set as column vectors (you can also set them as row vectors if you wish and the determinant will not change). Then $|\boldsymbol{a}\boldsymbol{b}| = det[\boldsymbol{a}\boldsymbol{b}]$ has the properties that they describe. If you wish you can pick a specific basis, e.g. $\boldsymbol{x} = \begin{bmatrix} 1 & 0 \end{bmatrix}$ and $\boldsymbol{y} = \begin{bmatrix} 0 & 1 \end{bmatrix}$.

As for the expression that you were having an issue with: $|\boldsymbol{a}\boldsymbol{b}+\boldsymbol{a}\boldsymbol{c}| = |\boldsymbol{a}(\boldsymbol{b}+\boldsymbol{c})| = |\boldsymbol{a}\boldsymbol{b}| + |\boldsymbol{a}\boldsymbol{c}|$ from their 3rd rule.

I am not sure whether this generalizes to more than 2D. You should probably look into exterior products and Levi-Civita if you want something more general.


They just assumed that distributivity holds like with normal addition and multiplication, so $\boldsymbol{a}(\boldsymbol{b}+\boldsymbol{c}) = \boldsymbol{a}\boldsymbol{b}+\boldsymbol{a}\boldsymbol{c}$. In fact the only difference to the properties that you're used to for real numbers is that commutativity becomes anti-commutativity: $\boldsymbol{a}\boldsymbol{b}=-\boldsymbol{b}\boldsymbol{a}$.

The product that they wrote is the outer product: $\boldsymbol{a}\boldsymbol{b} := \boldsymbol{a}\wedge\boldsymbol{b}$. Or more generally for $n$ $n$-D vectors: $\prod_{i=1}^n\boldsymbol{a}_i := \bigwedge_{i=1}^{n}\boldsymbol{a}_i$. If you take the coefficient in front of the resulting object ($n$-blade), it is equal to the determinant of the matrix where the vectors have been set as columns, provided that the dimension of the vectors is equal to $n$.

This means that if you have two 2-D vectors $\boldsymbol{a}, \boldsymbol{b}$, putting them together in a matrix $\begin{bmatrix} \boldsymbol{a} & \boldsymbol{b} \end{bmatrix}$ and computing the determinant $|\boldsymbol{a}\boldsymbol{b}| = \operatorname{det}\left(\begin{bmatrix} \boldsymbol{a} & \boldsymbol{b} \end{bmatrix}\right)$ yields the signed area of the parallelogram formed by those ($\boldsymbol{a},\boldsymbol{b}$ are two of its non-parallel edges). If you have three 3-D vectors $\boldsymbol{a},\boldsymbol{b},\boldsymbol{c}$, putting them together in a matrix $\begin{bmatrix}\boldsymbol{a} & \boldsymbol{b} & \boldsymbol{c}\end{bmatrix}$ and computing the determinant $|\boldsymbol{a}\boldsymbol{b}\boldsymbol{c}| = \operatorname{det}\left(\begin{bmatrix}\boldsymbol{a} & \boldsymbol{b} & \boldsymbol{c}\end{bmatrix}\right)$ yields the signed volume of the parallelepiped spanned by those. Similarly, if you have $n$ $n$-D vectors $\boldsymbol{a}_1,\ldots,\boldsymbol{a}_n$, then putting them in a matrix $\begin{bmatrix}\boldsymbol{a}_1 & \ldots & \boldsymbol{a}_n\end{bmatrix}$ and computing the determinant $|\boldsymbol{a}_1\ldots\boldsymbol{a}_n|= \operatorname{det}\left(\begin{bmatrix}\boldsymbol{a}_1 & \ldots & \boldsymbol{a}_n\end{bmatrix}\right)$ yields the signed hypervolume of the $n$-parallelotope formed by those.

Naturally the question arises what happens when you wedge $n$ $d$-D vectors where $d$ is not equal to $n$. A simple example is wedging two 3-D vectors. The coefficients in front of the three resulting $2$-blades that you get are equal to the coefficients of the cross product, and you have $\star(\boldsymbol{a}\wedge\boldsymbol{b}) = \boldsymbol{a}\times\boldsymbol{b}$, where $\star$ is the Hodge star operator. Then the definition from the book that you are reading is not applicable. It can be generalized though as the coefficients are made up of sub-determinants. More generally if you want to compute a specific coefficient of the wedge of multiple arbitrary dimensional vectors, then you can contract them with the Levi-Civita symbol and extract the relevant coefficient.

  • $\begingroup$ The issue I'm having is that I can't see how to show that $|\textbf{ab} +\textbf{ac}| = | \textbf{a} (\textbf{b} + \textbf{c})|$, that is, that it's legal to distribute there. $\endgroup$
    – James B
    Jun 10, 2022 at 2:30
  • $\begingroup$ @JamesB I updated my answer to address this and then some more. $\endgroup$
    – lightxbulb
    Jun 10, 2022 at 7:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.