Ios CATTransformM3dMakeRotation和CATTransformM3dRotate之间的差异
我在看和的官方文件,我不明白它们有什么区别。有人在哪里使用了Ios CATTransformM3dMakeRotation和CATTransformM3dRotate之间的差异,ios,swift,Ios,Swift,我在看和的官方文件,我不明白它们有什么区别。有人在哪里使用了CATTransformM3dMakeRotation和CATTransformM3dRotate?您可以使用4 x 4矩阵表示各种3D变换,包括平移、缩放、旋转、倾斜和透视 通过将表示每个变换的矩阵相乘,可以在单个矩阵中表示多个连续变换 CATTransferrM3dMakeRotation创建一个表示单个变换的矩阵:围绕给定轴旋转给定角度 CATTransformM3dRotate创建一个矩阵,就像CATTransformM3dMa
CATTransformM3dMakeRotation
和CATTransformM3dRotate
?您可以使用4 x 4矩阵表示各种3D变换,包括平移、缩放、旋转、倾斜和透视
通过将表示每个变换的矩阵相乘,可以在单个矩阵中表示多个连续变换
CATTransferrM3dMakeRotation
创建一个表示单个变换的矩阵:围绕给定轴旋转给定角度
CATTransformM3dRotate
创建一个矩阵,就像CATTransformM3dMakeRotation
一样,然后将该矩阵乘以另一个矩阵,从而将旋转添加到现有的变换序列中
所以你真的只需要其中一个。如果你有一个,你可以很容易地定义另一个
您可以像这样使用CATTransformM3dMakeRotation
编写CATTransformM3dRotate
:
func CATransform3DRotate(_ t: CATransform3D, _ angle: CGFloat, _ x: CGFloat, _ y: CGFloat, _ z: CGFloat) -> CATransform3D {
let rotation = CATransform3DMakeRotation(angle, x, y, z)
return CATransform3DConcat(rotation, t)
}
func myCATransform3DMakeRotation(_ angle: CGFloat, _ x: CGFloat, _ y: CGFloat, _ z: CGFloat) -> CATransform3D {
return CATransform3DRotate(CATransform3DIdentity, angle, x, y, z)
}
CATTransform3DCONCAT
返回两个矩阵的乘积
或者您可以使用CATTransformM3dRotate
编写CATTransformM3dRotate
如下:
func CATransform3DRotate(_ t: CATransform3D, _ angle: CGFloat, _ x: CGFloat, _ y: CGFloat, _ z: CGFloat) -> CATransform3D {
let rotation = CATransform3DMakeRotation(angle, x, y, z)
return CATransform3DConcat(rotation, t)
}
func myCATransform3DMakeRotation(_ angle: CGFloat, _ x: CGFloat, _ y: CGFloat, _ z: CGFloat) -> CATransform3D {
return CATransform3DRotate(CATransform3DIdentity, angle, x, y, z)
}
CATTransferorM3DidEntity
是标识矩阵,不表示任何转换
如果您想了解有关变换矩阵的更多信息,如何构造和组合它们,以及为什么需要4x4矩阵进行三维变换,请在您喜爱的搜索引擎中键入。
CATTransferorM3dMakeRotation
创建新的变换
CATTransferM3dRotate
接受现有变换并旋转它
如果你只是试着旋转,其实没有什么不同。但是如果你需要缩放,然后旋转,然后平移,最后可能会有所不同