【问题标题】:Java get point location from angle changeJava从角度变化获取点位置
【发布时间】:2013-11-13 22:16:21
【问题描述】:

这可能是一个问题,我根本不知道合适的术语来研究这个问题的答案,我很确定解决方案是三角函数。

我有一个接受 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);

完美运行。

【问题讨论】:

    标签: libgdx trigonometry


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多