Разбить кубическую кривую Безье на несколько точек

Я пишу алгоритм, который будет разбивать кубическую кривую Безье на несколько кривых (до 4). У меня есть значения t для каждой точки, которую я хочу разделить с самого начала. У меня также есть алгоритм уже для разделения кривой один раз:

SubdivPoints subdivideBezier(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, float t)
{
    Vector2 p11 = (p1 - p0) * t + p0;
    Vector2 p21 = (p2 - p1) * t + p1;
    Vector2 p31 = (p3 - p2) * t + p2;

    Vector2 p12 = (p21 - p11) * t + p11;
    Vector2 p22 = (p31 - p21) * t + p21;

    Vector2 p13 = (p22 - p12) * t + p12;

    return SubdivPoints(p11, p12, p22, p31, p13);
}

У меня вопрос, есть ли простой способ расширить это для разделения несколько раз? Я представляю, что после каждого разделения я хочу пересчитать значения t; мне интересно, сработает ли здесь простая арифметика. Например. Допустим, у меня есть значения t 0,2 и 0,6. Я разделил кривую при t = 0,2, дав мне две кривые. Вторая кривая покрывает значения t 0,2 <t <1 от оригинала. Если я пересчитаю второе значение t 0,6 делением: (0,6 - 0,2) / (1 - 0,2) = 0,5, то поделу вторую кривую при t = 0,75, будет ли это работать? Или мне нужно пересчитать это другим способом?

Ответы на вопрос(1)

Ваш ответ на вопрос