2013-11-13 5 views
2

Это может быть проблемой, что я просто не знаю правильной терминологии для исследования ответа на этот вопрос, я уверен, что решение является функцией триггера.Java получить местоположение точки от изменения угла

У меня есть метод, который принимает координату положения X/Y и угол в градусах. Он должен вернуть обновленный X/Y на основании предоставленного угла поворота.

Например, точка, как правило, расположена в точке 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; 
} 

Спасибо за любую помощь.

Обновление: Я избегал и возвращался к этой проблеме в течение нескольких дней. Теперь, после того, как я окончательно разместил этот вопрос, я выясню его в течение нескольких минут (для ppl с использованием libgdx).

Libgdx обеспечивает функцию поворота для Vector2s так что-то вроде:

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

работает отлично.

ответ

Смежные вопросы