Как я могу нарисовать путь с javafx, который имеет конкретные координаты? - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу разработать игру с javafx, где я должен уметь стрелять мячом.Координаты пути должны иметь форму движения снаряда, поэтому я хочу использовать для этого математическую формулу: y (x) = (- x² / (2 * v0² * cos (phi) ²) + tan (phi)* x + y0 (выглядит как парабола). Если шар достигает дна, он должен снова прыгнуть с более низкой координатой y. Я хочу создать цикл for, который устанавливает координату x как непрерывную переменную цикла for ирезультат приведенной выше формулы в виде координаты y. Проблема в том, что я не знаю, какие классы предоставили бы мой метод. Я думал поместить целые координаты в массив, но я не знаю, сработает ли это.также не знаю, нужна ли мне математическая функция. Какие классы мне понадобятся? Есть ли более простой способ?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Проблема вашего подхода в том, что формула, которую вы хотите использовать, не очень полезна.Это только дает вам статическую связь между координатами x и y, но полностью игнорирует время.Если вы хотите сделать свою игру более реалистичной, вы должны использовать какой-нибудь физический движок, например, http://www.dyn4j.org/.Их несколько, и я не знаю, какой из них лучше всего играть с JavaFX.Для типичного игрового цикла вы должны взглянуть на класс AnimationTimer в JavaFX.

0 голосов
/ 25 ноября 2018

Я хочу создать цикл for, который задает координату x как непрерывную переменную цикла for, а результат приведенной выше формулы - координату y.

Звучит как хороший способ сделать это.(Предполагая, что вы просто пытаетесь построить траекторию. Если вы пытаетесь анимировать снаряд по траектории, тогда ваша формула должна быть функцией t -> (x, y) ... или вам нужен другой подход.)

Проблема в том, что я не знаю, какие классы будут предоставлять мой метод.

Класс java.lang.Math обеспечивает трансцендентные функции (cos, tan и так далее).У него также есть функция pow ... но вам лучше использовать умножение, чтобы поднять что-то до степени 2.

Я предполагаю, что значение phi является просто константой.Вы должны иметь возможность найти его значение и встроить его в свой код.( ОБНОВЛЕНИЕ - мне сообщили, что phi может быть переменной. В любом случае, это не проблема.)

Но вы не найдете существующий класс / метод, которыйделает все для вас.Вы должны написать один .

Есть ли более простой способ?

Нет.(AFAIK)

...