What does it mean to "preconcat" a matrix in Android?
In reviewing: http://developer.android.com/refere开发者_运维问答nce/android/graphics/Canvas.html
I'm wondering
translate(): "preconcat the current matrix with the specified translation" -- what does this mean?
I can't find a good definition of "preconcat" anywhere on the internet! The only place I can find it is in the Android Source - I'm starting to wonder if they made it up? :)
I'm familiar with "concat" or concatenate, which is to append to, so what is a pre-concat?
When working with matrices, the word concatenation refers to multiplication.
Since matrix multiplication is not commutative, there is a separate word for backwards multiplication.
Pre-concatenating a
to b
means setting a = b × a
. (As opposed to a = a × b
, which will give a different matrix)
It just another example Google and their development absue words and abbriviations in the code.If I run the authorithy i will impose a fine on this.Basicaly it means multiply the existing matrix from the right side,and because in vector transformation the one on the right side gets moved first so it is a "pre-".For example if you want to scale the image and move to another location you should type:
mCanvas.translate(tx,ty);
mCanvas.scale(sx,sy);
mCanvas.drawBitmap(mBitmap,0,0,mPaint);
It is excatly in reverse order of common sense logic.
精彩评论