Как определить точку пересечения между прямой и сплайном Catmull-Rom-а?

Не используя численный метод желательно. Не охота перебирать числа.


Ответы (1 шт):

Автор решения: MBo

Сплайн Catmull-Rom описывается кубическим параметрическим уравнением от t. Прямую тоже описываете параметрическим уравнением от s. Приравниваете X-компоненты, выражаете s через t, подставляете в уравнение для Y-компонента, решаете кубическое уравнение, может получиться до трёх корней.

CX(t) = P0.x + (P1.x-P0.x)*s
s = (CX(t) - P0.x) /  (P1.x-P0.x)

CY(t) = P0.y + (P1.y-P0.y)*s
CY(t) - P0.y - (P1.y-P0.y)*(CX(t) - P0.x) / (P1.x-P0.x) = 0 // вот это решаете
→ Ссылка