Точка пересечения сплайна и линии - PullRequest
11 голосов
/ 24 октября 2008

Я пытаюсь найти способ рассчитать пересечение между b-сплайном и прямой линией. Пока что Google не особо помог.

Ответы [ 3 ]

8 голосов
/ 10 декабря 2008

Самый эффективный алгоритм, о котором я когда-либо слышал, называется отсечкой Безье.

Вот глава книги о пересечении кривых и сплайнов (pdf).

7 голосов
/ 24 октября 2008

Чисто математический подход:

  • Преобразуйте сплайн и линию так, чтобы линия лежала на оси X.
  • Рассчитать точки на сплайне, где Y = 0 (зависит от порядка сплайна).
  • Преобразуйте эти точки обратно в исходную систему коринат.

Если вы идете по этому пути, я могу выработать необходимые формулы.

6 голосов
/ 24 октября 2008

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

...