6
$\begingroup$

I've been doing some side-research on computer graphics as a hobby and came across this article on quaternions: http://www.opengl-tutorial.org/assets/faq_quaternions/index.html#Q2

In the first section on matrices, it describes 2x2, 3x3, and 4x4 matrices and their functions. Here is the entry on 3x3 matrices:

3x3 matrices are used to perform low-budget 3D animation. Operations such as rotation and multiplication can be performed using matrix
operations, but perspective depth projection is performed using
standard optimised into pure divide operations.

I'm not sure if this blurb means that 3x3 matrices aren't used anymore or if we are still using them for simpler calculations on certain animations. I understand what perspective depth projection is, but what does it mean it is performed using pure divide operations?

$\endgroup$
4
$\begingroup$

That quote is a very strange way to phrase things. We definitely use 3x3 matrices in computer graphics. They tend to be most useful for doing affine transformations of 2D objects. It allows you to have scale, rotation, shearing, and translation (in 2D), but not perspective transformations. I believe that's what the quote is trying to say.

To get a perspective projection of a 3D scene onto a 2D plane (such as your computer screen), at some point you will need to divide the x and y components of each point in your geometry by some factor that foreshortens lines in the z dimension. That's the divide that they are referring to. See this article for more details. In it, they describe:

The simplest perspective projection uses the origin as the center of projection, and z = 1 as the image plane. The functional form of this transformation is then x' = x / z; y' = y / z.

$\endgroup$
  • $\begingroup$ you can't do 3d translation with a 3x3 matrix, you need a 4x4. The rest I totally agree with :P $\endgroup$ – Alan Wolfe Sep 16 '16 at 20:48
  • 1
    $\begingroup$ Sorry if it was unclear. I was trying to say that you can do translation of 2D objects. I'll update to make that more clear. $\endgroup$ – user1118321 Sep 16 '16 at 20:49
  • $\begingroup$ You can use 3x3 matrices for 3D animation though if the bones are connected at their end points and do not exhibit scaling (e.g., for human-shaped skeletons where all you need is the rotation matrix and bone length), and this can significantly reduce memory/bus-bandwidth. $\endgroup$ – aces Sep 19 '16 at 3:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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