我正在尝试计算游戏中身体的角度。
我有这个:
power= sqrt ( pow( ( Xs-x),2)+pow((Ys-y),2) );
angle=( asin( (Ys-y ) / power ) )-90;
cannonBody->SetTransform(cannonBody->GetPosition(), (-angle ) );
NSLog(@"%f",( x));
NSLog(@"%f",( y));
NSLog(@"%f",( Xs-x));
NSLog(@"%f",(Ys-y));
NSLog(@"%f",power);
NSLog(@"%f", CC_RADIANS_TO_DEGREES( -angle));
不知怎的,我得到POWER
和(Ys-y)
个好的值(68/82,即0.82 = 56度)
并且日志总是显示-5100的角度值,即使我从弧度转换..
什么错了?
感谢。
答案 0 :(得分:4)
angle=( asin( (Ys-y ) / power ) )-90;
这看起来很可疑。 asin
函数以弧度为单位返回一个角度 - 从中减去90
是保证没有任何意义。
顺便说一下,atan2()
对于找到2D矢量的方向更容易且更稳定。当角度接近正确时,使用反正弦可能会产生大的舍入误差。 (大多数数学库实际上通过执行计算的逆并应用硬件atan2指令来计算反正弦。)