Я пытаюсь найти способ вычисления пересечения между b-сплайном и прямой. Пока Google не очень помог.
Точка пересечения между сплайном и линией
Ответ 1
Самый эффективный алгоритм, о котором я слышал, называется отсечением Безье.
Здесь глава книги о пересечении кривых и сплайнов (pdf).
Ответ 2
Чистый математический подход:
- Преобразуйте сплайн и линию так, чтобы линия лежала на оси X.
- Вычислить точки на сплайне, где Y = 0 (зависит от порядка сплайна).
- Преобразуйте эти точки обратно в исходную систему сердечников.
Если это так, как вы собираетесь, я могу выработать необходимые формулы.
Ответ 3
Ваш лучший подход может заключаться в том, чтобы разбить ваш сплайн на отдельные сегменты линии и протестировать каждый сегмент линии для пересечения с линией. Сплайн может пересекать линию более чем в одной точке, поэтому вам также нужно будет решить, какой из них вам интересен.