需要更好,更简单地了解CATransform3D

请通过图像。

初始位置旋转后

所以这是我从一些在线来源获得的代码,它改变了我的对象。 除此之外,我什么也不懂。 我是CATransform3D的新手,想知道它是如何工作的。

CATransform3D transform = CATransform3DIdentity; transform.m34 = 1.0 / -500; transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0, 1, 0.0f); _bgView.layer.transform = transform; 

我想知道这个代码是如何运行的? 为什么我们在m34中设定一些价值? 我发现它的某种matrix更令我困惑。 另外, CATransform3DRotate中的参数是什么意思?

我想了解,但没有进一步。

我想深入了解CATransform3D。 请帮助任何文章,文件或解释自己。

非常感谢。

我不确定什么m34没有看。

2D旋转很容易,因为它只需旋转一个angular度即可。 然后围绕Z轴(即直接指向屏幕的轴)完成旋转。

3D旋转是不同的。 它需要一个angular度,但它也需要知道你正在旋转的轴(或轴)。

CATransform3DRotate你给它五个参数…

  1. 您想要应用旋转的变换。
  2. angular度(弧度)π弧度= 180度3,4和5是应用于每个轴的angular度旋转的angular度。

  3. X轴 – 这是从屏幕左侧到屏幕右侧的轴。

  4. Y轴 – 这是从屏幕顶部到屏幕底部的轴。
  5. Z轴 – 这是直接指向屏幕的轴。

您在示例中应用的旋转如下所示…

angular度= 45度(转换为弧度)。 X = 0 Y = 1 Z = 0

这意味着所有的45度将围绕Y轴旋转。 即它会像中间的一条旋转门一样旋转。

如果你有参数…“1,0,0”在最后,那么它会像桨船桨旋转。 “离开你”

最后,如果你有“0,0,1”,它会像屏幕上的凯瑟琳轮一样旋转。

您也可以组合这些值,即具有“0,1,1”来应用围绕两个轴的旋转。

matrix的w行是透视投影。 你是否曾经在学校做过透视图画,在那里放一个点,然后画点线,然后绘制出适合这些线条的东西来给它透视。 那么m34值就决定了这个点的位置,所以提供了透视。 将其设置为-50,你会看到更大的差异。

设定值m34与此点的Z轴值有关。 所以这个点被放置在(0,0,-1/500)

m34值是第三行,第四列,是实际给出旋转透视的变换后面的matrix中的值。

您可以阅读更多关于维基百科matrix乘法背后的math。

  • 转换matrix
  • 3D透视

关于CATransform3DRotate(...)的值。

  • 第一个参数是你正在旋转的变换
  • 第二个是angular度(弧度),
  • 另外三个参数是你正在旋转的轴((x,y,z)向量)。