在一个 Android 应用程序中,我想画一条奔跑的腿。要输出腿的上半部分,我会执行以下操作:
// legCX,legCY is the location on screen about which the leg rotates.
Matrix m = new Matrix();
m.postTranslate(-legCX,-legCY);
m.postRotate(legRot);
m.postTranslate(legCX,legCY);
然后我将矩阵设置到画布上并绘制腿。
如何画出膝盖以下腿的第二部分?它的旋转速度与其上方的腿不同,并且有一个中心点随上方的腿一起移动。我尝试了以下方法,但结果是最终结果是围绕某个不跟随上面腿的单点旋转。
Matrix m = new Matrix();
m.postTranslate(-legCX,-legCY);
m.postRotate(legRot);
m.postTranslate(0,-legLength);
m.postRotate(footRot);
m.postTranslate(0,legLength);
m.postTranslate(legCX,legCY);
我怀疑可能有必要在两个不同的 Matrix 对象中进行两次旋转,然后以某种方式将它们组合起来,但我不知道该怎么做。
编辑:这种类型的矩阵似乎被称为“变换矩阵”。组合多个操作称为转换的组合。然而,关于这个主题的页面都没有提到如何进行一系列的平移和旋转。
当然,如果您可以使用矩阵围绕一个点进行旋转,则必须可以以某种方式执行多个矩阵运算以允许围绕一个点进行旋转,然后围绕另一个点进行额外的旋转。
我曾尝试查看有关骨骼动画的页面,但我无法理解他们在谈论什么。