Я пытаюсь создать класс, который принимает любое количество точек (положение и управление) и создает сплайн catmull-rom на основе предоставленной информации.Подключение кабелей Catmull-Rom и их длина?
Что я делаю - и я действительно уверен, если это правильный способ сделать это - это хранение каждой отдельной точки в классе так:
class Point { public: Vector3 position; Vector3 control; }
Где очевидно, позиция положение точки и управления - контрольная точка.
Моя проблема заключается в подключении сплайнов - очевидно, учитывая, что вышеуказанный класс содержит точку в сплайновой решетке, указывает, что в любой заданной позиции может быть только одна контрольная точка. Поэтому, имея три или более точки в сплаве с кошачьим сплавом, различные индивидуальные сплайны с камуфляжем, которые соединены, разделяют одну позицию и один элемент управления с другим таким сплайном.
Теперь, когда требуется то же самое положение, так как я хочу создавать сплайны, которые являются непрерывными между собой. Однако мне действительно интересно, должны ли контрольные точки совпадать между двумя сплайнами? С небольшим запуском контрольных точек я могу заставить его, как представляется, плавно перейти от одного сплайна к другому, но я должен подчеркнуть, что я не уверен, что способ, которым они переходят, согласуется с тем, как сплайны catmull-rom образуют свою форму , Я бы скорее сделал это правильно, чем сидеть на руках и рационализировать, что это достаточно хорошо.
Очевидно, что вторая часть моего вопроса сама по себе поясняет: учитывая две точки управления и положения, как я могу рассчитать длину сплайна catmull-rom?