Предположим, вы получили 1-кубическую кривую Безье с P0 = 0
и P3 = 1
, тогда кривая:
P(t) = b0,3(t)*0 + b1,3(t)*P1 + b2,3(t)*P2 + b3,3(t)*1
Где bi,3(t)
- полиномы Бернштейна степени 3. Затем мы ищем значение t
, где P(t)
минимально и максимально, поэтому получаем:
P'(t) = b1,3'(t)*P1 + b2,3'(t)*P2 + b3,3'(t)
= (3 - 12t + 9t^2)*P1 + (6t - 9t^2)*P2 + 3t^2
= 0
Это решение имеет замкнутую форму, но нетривиальное. Согласно WolframAlpha, когда 3P1 - 3P2 +1 != 0
это:
t = [2*P1 - P2 +/- sqrt(P1^2-P1*P2-P1+P2^2)] / (3*P1 - 3*P2 + 1)
В противном случае это:
t = 3P1 / (6P1 - 2)
Для общей n-мерной кубики Безье P0 *, P1 *, P2 *, P3 * вычисляют:
P1 = proj(P1*, P03*) / |P3* - P0*|
P2 = proj(P2*, P03*) / |P3* - P0*|
Где proj(P, P03*)
- расстояние со знаком P0*
до точки P
, спроецированной на линии, проходящей через P0*
и P3*
.
(Я не проверял это, поэтому, пожалуйста, подтвердите, что в моих рассуждениях нет ничего плохого.)