Java Как заставить графический объект двигаться в его направлении - PullRequest
1 голос
/ 26 октября 2019

За последние несколько недель я пытался исправить проблему с тригонометрией, которая у меня возникла. Мне нужно сделать графическое изображение Java.awt, которое я нарисовал с помощью ввода x и y из USB-джойстика, и двигаться в направлении, в котором он находится в данный момент, я получил вращение, но мне нужно выяснить, как сделать функцию moveForward().

Немного больше фона в том, что в настоящее время я хочу использовать джойстик x axis , чтобы повернуть изображение. Я пытался использовать x = speed * sin(angle) и y = speed * cos(angle). Джойстик также сделан Logitech, и я пытаюсь создать симулятор робота FRC (First Robotics Competition).

По сути, изображение ниже показывает, что я имею в виду. Я хочу, чтобы робот двигался вверх, вниз, поворачивался влево и вправо , и при любом заданном вращении он мог двигаться в этом направлении .

Ideal Image Function

Если бы кто-то мог помочь, это было бы удивительно.

Обратите внимание ... снова я делаю это в Java и пытаюсь исправить это в течение 2 недель.

Если больше коданеобходимо прокомментировать

1 Ответ

1 голос
/ 30 октября 2019

Общий подход для таких задач - использовать вектор направления . Этот вектор используется для отслеживания направления вашего объекта.

Чтобы повернуть объект: Просто поверните вектор, используя новый угол.

Чтобы переместить объект: умножить вектор на текущую скорость (которая может быть постоянной). Наконец добавьте вектор к позиции вашего объекта, чтобы получить новую позицию. Например:

newPosition = direction.multiply(speed).add(position)

Затем нарисуйте объект на новой позиции и поверните.


Примечание:

Умножение векторасо скаляром это просто v.x*scalar и v.y*scalar. Добавление просто v.x+a and v.y + b`. Итак:

newPosition.x = direction.x * speed + position.x;
newPosision.y = direction.y * speed + position.y;
...