У меня проблема. Предположим, что у нас есть одна кубическая кривая безье, определяемая четырьмя контрольными точками. Предположим теперь, что кривая вырезается из точки, и каждый отрезок снова представляется с использованием кубических кривых Безье. Итак, теперь, если нам даны два таких безьеров B1 и B2, есть ли способ узнать, могут ли они быть объединены, чтобы сформировать другую кривую Безье B? Это упрощает геометрию, объединяя две кривые и уменьшая количество контрольных точек.
Присоединение кривых Безье
Ответ 1
Некоторые мысли об этой проблеме. Я полагаю, что была начальная кривая Безье P0 - P3 с контрольными точками P1 и P2

Позвольте сделать два подразделения при параметрах ta и tb. Теперь у нас есть две подкуры (желтые) - P0 - PA3 и PB0 - P3. Синий интервал теряется. PA1 и PB2 - известные контрольные точки. Нам нужно найти неизвестные P1 и P2.
Некоторые уравнения
Начальная кривая:
C = P0*(1-t)^3+3*P1(1-t)^2*t+3*P2*(1-t)*t^2+P3*t^3
Endpoints:
PA3 = P0*(1-ta)^3+3*P1*(1-ta)^2*ta+3*P2*(1-ta)*ta^2+P3*ta^3
PB0 = P0*(1-tb)^3+3*P1*(1-tb)^2*tb+3*P2*(1-tb)*tb^2+P3*tb^3
Контрольные точки малых кривых
PA1 = P0*(1-ta)+P1*ta => P1*ta = PA1 – P0*(1-ta)
PB2 = P2*(1-tb)+P3*tb => P2(1-tb) = PB2 – P3*tb
Теперь заменим неизвестные точки в уравнении PA3:
**PA3***(1-tb) = **P0***(1-ta)^3*(1-tb)+3*(1-ta)^2*(1-tb)*(**PA1** – **P0***(1-ta))+3*(1-ta)*ta^2*( **PB2** – **P3***tb)+**P3***ta^3*(1-tb)
(некоторые знаки умножения были потеряны из-за форматирования SO)
Это векторное уравнение, оно содержит два скалярных уравнения для двух неизвестных ta и tb
PA3X*(1-tb) = P0X*(1-ta)^3*(1-tb)+3*(1-ta)^2*(1-tb)*(PA1X – P0X*(1-ta))+3*(1-ta)*ta^2*( PB2X – P3X*tb)+P3X*ta^3*(1-tb)
PA3Y*(1-tb) = P0Y*(1-ta)^3*(1-tb)+3*(1-ta)^2*(1-tb)*(PA1Y – P0Y*(1-ta))+3*(1-ta)*ta^2*( PB2Y – P3Y*tb)+P3Y*ta^3*(1-tb)
Эта система может быть решена как численно, так и аналитически (на самом деле Maple решает ее с очень-очень большой кубической формулой :()
Если у нас есть точки с некоторой ошибкой, имеет смысл построить переопределенную систему уравнений для некоторых точек (PA3, PB0, PA2, PB1) и решить ее численно, чтобы минимизировать отклонения.
Ответ 2
Здесь вы найдете довольно простое решение: https://math.stackexchange.com/a/879213/65203.
Когда вы разделяете Безье, векторы, образованные двумя последними управляющими точками первой секции и первые две контрольные точки второй секции, являются коллинеарными, а отношение их длин приводит к значению параметра при расщеплении. Проверка того, что общая контрольная точка соответствует этому значению параметра, является легкой задачей (чтобы избежать случайной коллинеарности).