码迷,mamicode.com
首页 > 其他好文 > 详细

Box2D淌坑日记: 如何正确的设置角度

时间:2015-02-20 14:05:18      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

对刚体角度设置的唯一函数是

SetTransform

然而,这个函数不会对传入的角度作任何处理,因此,如果你试图设置一个角度,并应用一个revoluteJoint时,可能会出现问题。

我在实践中碰到的问题是,我通过其他方式计算出了当前角度,将角度设上,按照设想,刚体应该做一个小角度的摆动,没想到它摆动了一周之后才回到终点,也就是说多摆动了1周。

之后我通过打log,发现问题出在jointAngle上。当判断upper和lower角度限制时,revoluteJoint计算了当前角度

aB - aA - referenceAngle

而这个角度计算出来的是-6.3,难怪旋转了一周。

于是我顺藤摸瓜,发现最初设置角度时,使用的是SetTransform,而这个函数并未对传入的角度做修正。因此,这个步骤需要自己做。

怎么做才合适呢?如下是我现在使用的办法:
b2Rot rot = b2Rot(angle);

angle = rot.GetAngle();

这个函数将调用std::atan2来计算出在一个固定区间内的角度。只要在SetTransform设置角度前确保了角度在0-2pi 或者-pi-pi内,就不会有问题了

Box2D淌坑日记: 如何正确的设置角度

标签:

原文地址:http://www.cnblogs.com/eaglelun/p/4296497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!