Cocos2d-x学习(二十六):cocos2d旋转矩阵推导

cocos2d中的旋转是很常用的,其实现原理是根据变换计算出变换矩阵,也就是将所要执行旋转操作的物体的物体坐标系进行旋转,再还原到世界坐标系的过程,至于还原到世界坐标系的操作,则需要用到矩阵这个数学工具,根据旋转的角度,得到旋转的矩阵,将矩阵右乘物体上的点,得到的便是世界坐标系中的点信息。


上图为物体坐标系,初始状态与世界坐标系相同,即坐标系xoy,在xoy坐标系中任意一点v(x, y),与x轴夹角为α度;之后旋转物体β度,即坐标系x'oy',则v点对应旋转β度,则此时v‘点相对于世界坐标系x轴的夹角为(α+β)度。

假设ov的长度为R,则x=Rcosα,y=Rsinα;当xoy坐标系逆时针旋转β度后,ov也对应旋转β度,此时ov'与x轴夹角为(α+β),则x'=Rcos(α+β),y'=Rsin(α+β)。

根据三角函数公式可知:

x' = Rcos(α+β) = R(cosαcosβ - sinαsinβ)

y' = Rsin(α+β) = R(cosαsinβ + sinαcosβ)

我们略去标量R,可得等式


求解可得


通过CCNode类的nodeToParentTransform()中使用的变化矩阵可验证

// Build Transform Matrix
        // Adjusted transform calculation for rotational skew
        m_sTransform = CCAffineTransformMake( cy * m_fScaleX,  sy * m_fScaleX,
            -sx * m_fScaleY, cx * m_fScaleY,
            x, y );



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值