Java从角度变化获得点位置

时间:2013-11-13 22:16:22

标签: libgdx trigonometry

这可能是一个问题,我根本不知道研究答案的正确术语,我很确定解决方案是触发器的功能。

我有一个接受X / Y位置坐标和角度的方法。它应该根据提供的旋转角度返回更新的X / Y.

例如,A点通常位于x = 0,y = 2(顶部中间)。现在我需要将它旋转到它的侧面90度。在我看来,我知道它的位置现在是x = 2,y = 0(中右)但我不知道产生这个的等式。

我想我需要首先确定起点的象限,然后从那里执行正确的触发功能。这是我使用libgdx开发的游戏,它是Vector2对象的来源。

我到目前为止:

public Vector2 getPointsRotated(Vector2 startPoint, float angle){
    Vector2 newPoint = new Vector2(0,0);

    // determine the starting quadrant
    int quad=0;
    if((startPoint.x>=0)&&(startPoint.y>=0)){quad=0;}
    if((startPoint.x<0)&&(startPoint.y>=0)){quad=1;}
    if((startPoint.x<0)&&(startPoint.y<0)){quad=2;}
    if((startPoint.x>=0)&&(startPoint.y<0)){quad=3;}

    if(quad==0){
        // doesn't work
        newPoint.x = (float) ((newPoint.x)* (Math.sin(angle)));
        newPoint.y = (float) ((newPoint.y)* (Math.cos(angle)));
    }
    // ...
    // other quadrants also don't work
    // ...
    return newPoint;
}

感谢您的帮助。

更新: 我一直在避免并回到这个问题几天。现在终于在这里发布了这个问题之后我会在几分钟内解决它(对于使用libgdx的ppl而言)。

Libgdx为Vector2s提供旋转功能 所以像:

Vector2 position = new Vector2(0,2);
position.rotate(angle);

完美无缺。

1 个答案:

答案 0 :(得分:0)