# Why translation uses multiplication and not addition? [closed]

To translate an object from (x, y, z) to (a + x, b + y, c + z) it's done using:

OK, that's cool, but why would we multiply in the first place when we can add the two matrices directly as:

addition is faster and more effective, plus it's straightforward?

• Isn't this more of a math question than a game development question? – Anko Jan 16 '14 at 10:08
• @Anko This is more about the implementation and applied part in graphics than the mathematical part. – GAX Jan 16 '14 at 10:22
• This question is mostly opinion-based. Addition is indeed more effective and straightforward, but what makes you think that it isn’t actually used? I add vectors together all the time. – sam hocevar Jan 16 '14 at 10:47
• Voting to close, as the premise of the question is wrong, since it assumes that translation is always done using multiplication, which is simply not true. It's a matter of opinion, personal preference and circumstance as to which one to use. No-one is forcing you to use full 4x4 matrix operations to do a simple translation. – MrCranky Jan 16 '14 at 12:22

because it allows to combine rotation and translation into a single matrix. Multiplying those matrices together gives use the concatenated operation. We can rotation around an arbitrary point P by first translating to -P then rotating and then translating by P.

multiplying these matrices together gives us a single matrix we can apply blindly without having to worry about knowing when to add a vector and when to multiply with a matrix

You can store ALL transformations in one matrix, rather than a matrix and a vector. Also, matrices are associative. This means a translation, then a rotation, is not the same as a rotation and then a translation. The translation could be affected by the previous rotations, or scales. This could be useful.

Also, when multiplying a 4*4 matrix with a 4 component vector, we could make the forth component of the vector 0, meaning it'll ignore the translation. A vector with a forth component of 0 means it's normalised. We don't want a normalised vector to me translated.

Yes, you could do all of this without matrices. It's just simpler and faster this way. You especially wouldn't want to manipulate a game with half matrices and half vectors.

• I'm know that rotation => translation is not the same as translation => rotation, but I can't relay see how this answers why it's done using multiplication and not addition. – GAX Jan 16 '14 at 9:59
• Because rotation and scale are not done through addition. We can't do a multiplication AND an addition in the same operation. – Ben Jan 16 '14 at 10:01
• I think you mean "matrix multiplication is non-commutative" (or, in general, affine transformation is non-commutative) rather than "matrices are associative". – Peter Taylor Jan 16 '14 at 16:29