Так, ладно, возвращаемся к нашим сплайнам.
B(asis)-Spline
Это более общие сплайны, чем Безье, у них посложнее и поинтереснее математика, но упарываться в нее мы не будем, ибо зачем - в большинстве кейсов вряд ли оно вам понадобиться, а если понадобиться - знаете, в какую сторону копать.
Итак, сразу к практикеДопустим, у нас есть набор точек (A,B,C,D,E,F,G), будем строить сплайн 3 порядка (брать по 4 точки и строить на их основе кубическую Безье). Чтобы сплайн проходил через первую и последнюю точки, нам нужно расширить набор до (A,A,A,B,C,D,E,F,G,G,G). Берем по 4 точки для каждого сегмента: (AAAB, AABC, ABCD, и тд) и из них считаем точки для Безье:
1. берем точку на отрезке между первой и второй, скажем 2/3
2. берем вторую точку на отрезке между второй и третьей на 1/3
3. берем третью на том же отрезке на 2/3
4. берем четвертую между третьей и четвертой на 1/3
5. Середины между (1) - (2) и (3) - (4) будут опорными точками для нашей Безье, а (2) и (3) - контрольными.
Немного запутанно, но с
примером, надеюсь, будет понятно - там все по шагам расписано.
Тут используется 1/3 везде, что делает эту кривую однородными/uniform, однако они могут быть и неоднородными/non-uniform - с разными смещениями узлов, что делает их NURBS.
Зачем они нужыЕсли Безье это стандарт для векторной графики на тему рисования и около, то NURBS - для CAD и 3D.
Я их использовал только однажды - считать дугу челюсти по предсказанным точкам.