2008-10-24 3 views

ответ

6

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

+0

Согласен, это обычно рекомендуемый метод. Обычно это более эффективно, если вы делаете это итеративно, уточняя сегменты линий, где вы найдете пересечение, пока не получите требуемое разрешение. – Kena 2008-10-24 16:56:19

7

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

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

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

+0

Мне нравится подход, но как вы решаете, когда сплайн Y = 0? Есть ли способ, кроме оценки сегментов сплайнов и попытки его аппроксимации? – Herms 2008-10-24 17:29:53

+0

В зависимости от порядка сплайна существуют существующие решения для сплайн-уравнений (по крайней мере, до кубических сплайнов). Формулы имеют тенденцию становиться действительно неудобными, и они не гарантированно низки в числовых ошибках. Как я сказал: чистый математический подход. – 2008-10-24 18:43:17

Смежные вопросы