Как нарисовать кривую, приближенную к оригинальной - PullRequest
3 голосов
/ 08 мая 2011

У меня есть набор точек, и я хочу нарисовать кривую, которая должна быть аппроксимирована к исходной кривой.
Допустим, в системе «ястребиный глаз» (используемой в крикете) у меня есть набор координат шара во время всего полета мяча, теперь, как я могу нарисовать такую ​​кривую, проходя через пространственные координаты шара, и смотреть адекватно на исходную кривую
один метод, который я думал, чтобы получить большое количество очков, так что каждые две точки
очень близко друг к другу, а затем провести прямой свет между ними

Ответы [ 2 ]

5 голосов
/ 08 мая 2011

Кривые почти всегда отображаются в четыре этапа:

  1. Приблизительный или интерполированный набор точек с использованием алгоритма кривой или сплайна. Выбор может включать в себя:

    • Кубические сплайны , которые проходят через все точки данных и дают гладкую кривую
    • Кривые Безье , которые не проходят через все точки, но лежат в пределах огибающей последовательных групп из 4 точек, окружающих каждый участок кривой.
    • Кривые Эрмита , которые определяются набором точек и набором касательных векторов: вам нужно как-то сгенерировать набор касательных векторов, чтобы использовать этот тип кривой.
    • (и, вероятно, больше, что я забыл)
  2. Преобразование , какое бы представление вы ни выбрали, в Кривая Безье : это может быть достигнуто путем простого преобразования матрицы из других типов кривой.

  3. Неоднократно подразделить кривую Безье: контрольные точки имеют тенденцию приближаться к кривой.

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

Если вы идете прямо к кривой Безье, которая, вероятно, самая простая, то есть несколько очень простых и элегантных методов ее деления .

2 голосов
/ 08 мая 2011

Я очень рекомендую для этого сплайны Катмулла-Рома, они основаны на кривых Эрмита. Вместо того, чтобы использовать 2 точки и 2 касательные, он использует четыре смежные точки данных для интерполяции, что делает его более подходящим / более простым для повышения дискретизации траектории движения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...