Это может быть проблемой, что я просто не знаю правильной терминологии для исследования ответа на этот вопрос, я уверен, что решение является функцией триггера.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);
работает отлично.