任何人都可以通过明确的例子解释有关appendRotation,追加Matrix3D的翻译函数的问题吗?
答案 0 :(得分:0)
Performing complex 3D transformations
基本上,该解释将导致在具有固定基础的3D空间中的三维正交基的变换。每个变换都可以被视为变换的组合,并且可以(技术上)分成一系列的缩放,旋转和平移变换。顺序的顺序很重要。
每个"简单"转换,无论是旋转,缩放,平移还是透视,都由AS3中称为Matrix3D
的4x4矩阵描述。您可以参考Matrix
进行2D转换,因为基本原理是相同的。还有零转换"矩阵,也称为"单位矩阵",它描述了在任何地方都没有移动的变换,它看起来像这样:
[1,0,0,0]
[0,1,0,0]
[0,0,1,0]
[0,0,0,1]
因此,当您需要创建转换时,从这个矩阵开始,然后开始将其向右乘以描述预期步骤的各种矩阵。
appendTranslation
将矩阵与翻译矩阵相乘,如下所示,其中x
,y
,z
为参数:
[1,0,0,x]
[0,1,0,y]
[0,0,1,z]
[0,0,0,1]
appendScale
&#39}矩阵如下所示:
[xScale,0, 0, 0]
[0, yScale,0, 0]
[0, 0, zScale,0]
[0, 0, 0, 1]
appendRotation
创建一个矩阵,用于描述axis
向量周围的旋转,该向量从变换对象坐标系中的pivotPoint
位置开始。转换是为了使枢轴点和轴向量上的所有点保持原位,而其他点逆时针旋转degrees
,如果从枢轴点向下看轴。实际示例太重而无法手动计算,但可以构建围绕轴的简单旋转矩阵,它们看起来像这样(cos
和sin
代表Math.cos(angle)
和{{1分别):
围绕X轴旋转:
Math.sin(angle)
绕Y轴旋转:
[1,0, 0, 0]
[0,cos,-sin,0]
[0,sin,cos, 0]
[0,0, 0, 1]
绕Z轴旋转:
[cos,0,-sin,0]
[0, 1,0, 0]
[sin,0,cos, 0]
[0, 0,0, 1]
通过[cos,-sin,0,0]
[sin,cos, 0,0]
[0, 0, 1,0]
[0, 0, 0,1]
函数添加所有需要的矩阵后,矩阵将包含与完整转换相对应的值。
这个topis需要额外的阅读,其中很多,here是书籍和3D转换教程的一些链接。