我有一个角度、线段长度和起点,想要计算目标点以将我的对象移动到这里。我正在遵循这篇文章和其他一些文章:
cocos2d calculate destination point given start point, angle and distance
问题:对于第一象限和第四象限,它给出了正确的角度。但是对于第二象限和第三象限,它朝着完全相反的方向前进。我无法找出问题所在。这张图片可能会让它更清晰:
绿色箭头显示我的意图方向,红色箭头显示实际移动方向。
到目前为止,我的代码如下:
float m = (targetPosition.y - initialPosition.y) / (targetPosition.x - initialPosition.x);
angle = atan (m) * 180 / PI;
int lineLength = 200;
float radiansAngle = CC_DEGREES_TO_RADIANS(angle);
Vec2 endPoint;
endPoint.y = sinf(radiansAngle) * lineLength + initialPosition.y;
endPoint.x = cosf(radiansAngle) * lineLength + initialPosition.x;
atan2
是有效的。请检查您自己的错误,并考虑在您的语言中atan2
返回的范围是 0..2Pi 还是 -Pi..Pi。 - MBo