开发者

What does it mean to "preconcat" a matrix in Android?

开发者 https://www.devze.com 2022-12-27 17:12 出处:网络
In reviewing: http://developer.android.com/refere开发者_运维问答nce/android/graphics/Canvas.html

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消