给定起始点,角度和距离的cocos2d计算目标点

时间:2012-10-24 22:14:48

标签: cocos2d-iphone

我认为很快。 Cocos2d和xcode中的2d问题。

我有

CGPoint currPoint;
float lineLength;
float angle;

现在,我需要在角度Degrees处找到lineLength远离currPoint的点。

试图搜索,但我找到的答案并不是我想要的。非常感谢任何人指出(我假设)我忽略的非常简单的数学。

2 个答案:

答案 0 :(得分:8)

从头到尾:

CGPoint endPoint;
endPoint.x = sinf(CC_DEGREES_TO_RADIANS(angle)) * lineLength;
endPoint.y = cosf(CC_DEGREES_TO_RADIANS(angle)) * lineLength;
endPoint = ccpAdd(currPoint, endPoint);

不确定矢量指向的位置,是否可以旋转90度,180度或270度。如果是这样,只需从角度添加/减去该数量。

答案 1 :(得分:0)

我花了很多时间试图解决这个问题。最后,由于接受了答案并找到了计算角度的正确方法,我解决了这个问题。这是我的解决方案:

float angle = atan2(y2 - touchSprite->getPosition().y, x2 - touchSprite->getPosition().x) * 180 / M_PI;
float radiansAngle = CC_DEGREES_TO_RADIANS(angle);

Vec2 endPoint;
endPoint.y = sinf(radiansAngle) * lineLength + touchSprite->getPosition().y;
endPoint.x = cosf(radiansAngle) * lineLength + touchSprite->getPosition().x;