cocos2dx2.2中CCNode::nodeToParentTransform存在的疑问

  在函数CCNode::nodeToParentTransform中存在一下代码片段:

CCAffineTransform CCNode::nodeToParentTransform(void){

  ............................

  float radiansX = -CC_DEGREES_TO_RADIANS(m_fRotationX);
  float radiansY = -CC_DEGREES_TO_RADIANS(m_fRotationY);
  cx = cosf(radiansX);
  sx = sinf(radiansX);
  cy = cosf(radiansY);
  sy = sinf(radiansY);

  ..............................

  m_sTransform = CCAffineTransformMake( cy * m_fScaleX,  sy * m_fScaleX,  -sx * m_fScaleY, cx * m_fScaleY, x, y );
}

  假设m_fScaleX, m_fScaleY为1,x, y为0,则旋转矩阵为:

  

  貌似这个矩阵是存在问题的,当我们只对X轴进行旋转时得到的效果如下:

  
  旋转代码片段如下:

CCSprite* pSprite = CCSprite::create("HelloWorld.png");
pSprite->setPosition(ccp(0,0));
pSprite->setAnchorPoint(ccp(0,0));
pSprite->setRotationX(45);
this->addChild(pSprite, 0);

  个人觉得,既然是对X方向进行旋转,Y坐标不应该改变,而从图片上看Y坐标已经变了。

  现在对源代码进行更改,如下:

m_sTransform = CCAffineTransformMake( cx * m_fScaleX,  sy * m_fScaleX,  -sx * m_fScaleY, cy * m_fScaleY, x, y );

  即将cx和cy的位置换一下,转换矩阵如下:

  

  然后重新运行代码得到的结果如下:

  

  这样与我预期的结果是一样的~~。

  求大神指正!

转载于:https://www.cnblogs.com/aclove/p/3802386.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值