在 Android 中“预先合并”一个矩阵是啥意思?
Posted
技术标签:
【中文标题】在 Android 中“预先合并”一个矩阵是啥意思?【英文标题】:What does it mean to "preconcat" a matrix in Android?在 Android 中“预先合并”一个矩阵是什么意思? 【发布时间】:2010-04-23 01:01:50 【问题描述】:审核中:http://developer.android.com/reference/android/graphics/Canvas.html
我想知道
translate(): "preconcat the current matrix with the specified translation" -- 这是什么意思?
我在互联网上的任何地方都找不到“preconcat”的良好定义!我唯一能找到它的地方是 Android Source - 我开始怀疑他们是否编造了它? :)
我熟悉“concat”或concatenate,也就是追加,那么什么是pre-concat?
【问题讨论】:
【参考方案1】:在处理矩阵时,连接一词指的是乘法。
由于矩阵乘法不可交换,因此有一个单独的词用于反向乘法。
将a
预先连接到b
意味着设置a = b × a
。 (相对于a = a × b
,它会给出不同的矩阵)
【讨论】:
谢谢。我的问题是在 Android Canvas 的上下文中,但是我很难在画布和矩阵之间建立连接? @Brad:画布维护一个变换矩阵;translate
操纵它。
画布维护一个矩阵,并且画布由 OpenGL 中明确定义的方法操作。相关定义的重要来源是:gpwiki.org/index.php/OpenGL:Tutorials:Theory【参考方案2】:
这只是另一个例子,谷歌和他们的开发在代码中使用了单词和缩写。如果我运行权威,我会对此处以罚款。基本上,这意味着从右侧乘以现有矩阵,因为在向量转换中右侧的一个首先移动,因此它是“前”。例如,如果您想缩放图像并移动到另一个位置,您应该键入:
mCanvas.translate(tx,ty);
mCanvas.scale(sx,sy);
mCanvas.drawBitmap(mBitmap,0,0,mPaint);
这与常识逻辑完全相反。
【讨论】:
以上是关于在 Android 中“预先合并”一个矩阵是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
VTK中,类vtkActor::GetMatrix(),这个4*4矩阵是啥意思??