Простая 2D-траектория с кривой Безье - PullRequest
0 голосов
/ 09 января 2012

Здравствуйте и с Новым годом!

Позвольте мне начать со строгих фактов вместо того, чтобы писать здесь весь сценарий.

enter image description here

Эточто у меня есть :

  • Самолет в 2D-пространстве (X, Y)
  • Пункт назначения, в который должен лететь этот самолет в 2D-пространстве (X, Y)
  • Класс кривой Безье, который генерирует Безье из 4-х точек (A, B, C, D)

Это то, что мне нужно сделать :

  • Когда пользователь нажимает на пространство в X ', Y' мне нужно сгенерировать кривую Безье для этой плоскости, чтобы лететь туда.

Это некоторые предположения :

  • Известно, что самолет не может вращаться в одном месте, он должен совершить некоторый минимальный поворот
  • Известно, что когда пункт назначения находится передплоскость, в которой он не поворачивается

  • Кривая Безье должна быть рассчитана из 4 точек, где

  • точка A = фактическое положение плоскости
  • точка B = фактическое положение плоскости+ фактическое направление самолета * 2 (так что он идет немного вперед?)
  • точка C = должна быть рассчитана
  • точка D = пункт назначения самолета

Вот несколько таких сценариев:

enter image description here

enter image description here

enter image description here

Вопрос :

  • Как рассчитать этокривая Безье, у меня уже есть точки A, D, но мне нужны эти B, C, чтобы сделать этот поворот правильным.

  • Как я могу охарактеризовать этот Безье так, скажем, у плоскости A повороты меньше, чемplaneB?

У меня почти было это, но почти ничего в этом случае, поэтому я лучше переписать это с вашей помощью.

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

1 Ответ

0 голосов
/ 10 января 2012

Точка B, которую вы описали («фактическое положение плоскости + фактическое направление плоскости»), будет работать достаточно хорошо.То, как далеко вы продвинетесь вдоль плоскости, будет меняться, когда плоскость начнет поворачиваться.

Для точки C ее установка будет такой же, как и точка D (пункт назначения), будет работать достаточно хорошо.

Что касается скорости поворота, я не уверен, что вы получите большой контроль, используя (кубическую) кривую Безье.Они все о расположении и направлении, не имея ничего, чтобы изменить кривизну второго порядка.Регулировка точки B может быть хорошим компромиссом, но она скорее регулирует время реакции и траекторию, чем скорость поворота.

...