3D变换动画精髓

郁闷的要死,写了N长的博客,结果按到command+Q了,对于学习动画的点点滴滴记载就销毁一旦了,哭!

如何开发一个可以平滑控制并且很有趣的交互动画,学习下边只是一个基础。


现在只记录干货:

图层知识看图一图说尽:



2D平面动画    一图举例说尽,这里的坐标系用的是mac的坐标系 和IOS的坐标系不同 可以举一反三地。



图层几何变换:

可以通过矩阵变换来改变一个图层的几何形状,CATransform3D 的数据结构定义一个同质的三维变换(4x4 CGFloat 值的矩阵),用于 图层的旋转,缩放,偏移,歪斜和应用的透视。图层的两个属性指定了变换矩阵:transform 和 sublayerTransform 属性。图层的 transform 属性指定的矩阵结合图层的 anchorPoint 属性作用于图层和图层的子图层上 面,图层的 sublayerTransform 属性指定的矩阵只会影响图层的子图层,而不会对 图层本身产生影响。

你可以通过以下的任何一个方法改变 CATransform3D 的数据结构:(1) 使用CATransform3D函数(2) 直接修改数据结构的成员(3) 使用键-值编码改变键路径

CATransform3DIdentity 是单位矩阵,该矩阵没有缩放、旋转、歪斜、透视。把该 矩阵应用到图层上面,会把图层几何属性修改为默认值。

对我门来说学习3D动画的困惑点在于,如何灵活自如掌握变换函数,我门先初步了解下3D动画的变换函数  也是一图说尽,先了解下 然后干货在下边:


矩阵的结构如下:

ATransform3D 数据结构的定义,结构的成员都在其相应的矩阵位置。

struct CATransform3D               

{                 

CGFloat m11, m12, m13, m14;                 

CGFloat m21, m22, m23, m24;                

CGFloat m31, m32, m33, m34;                 

CGFloat m41, m42, m43, m44;                 

};  typedef struct CATransform3D CATransform3D;   


关于m34,我门看到很多立体动画例子都用到这个值 ,那么这个值到底是干什么的呢? 我门用数学的知识告诉你。

原网址:

在iOS中使用CATransform3D这个结构体来表示三维的齐次坐标变换矩阵. 齐次坐标是一种坐标的表示方法,n维空间的坐标需要用n+1个元素的坐标元组来表示,在Quartz 2D Transform中就有关于齐次坐标的应用,那边是关于二维空间的变换,其某点的齐次坐标的最后一个元素始终设置为1。使用齐次坐标而不是简单的数学坐标是为了方便图形进行仿射变换,仿射变换可以通过仿射变换矩阵来实现,3D的仿射变换可以实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值