Russian Qt Forum
Март 29, 2024, 12:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Редактирование кривых  (Прочитано 9000 раз)
ssoft
Программист
*****
Offline Offline

Сообщений: 574


Просмотр профиля
« Ответ #15 : Декабрь 28, 2017, 09:44 »

Зависимая разбивка на компоненты - это когда рассматриваются один сплайн вида P{X,Y,Z}(t) или P{X,Y,Z,t}(u).
Независимая - когда для каждой пространственной компоненты отдельный сплайн P{X}(t) или P{X,t}(u), P{Y}(t) или P{Y,t}(v), P{Z}(t) или P{Z,t}(w).

Если хочется иметь в пространстве {X,Y,Z} "управляющие" точки одного и того же сплайна, то компоненты "связаны" друг с другом единым параметрическим описанием кривой.
Если же для P{X}(t), P{Y}(t), P{Z}(t) зависимости отдельные, то не о каких "управляющих" точках в пространстве речи быть не может. Здесь могут быть только точки ключевых кадров и расстановка меток времени вдоль траектории.

Вернемся к первому случаю, когда для всех пространственных компонент имеется единый сплайн P{X,Y,Z}(t).

Рассмотрим графики в пространстве {X, t}, {Y, t}, {Z, t} и управляющие векторы. Тангенс угла наклона вектора дает значение производной пространственной компоненты по времени в точке, собственно скорость движения в вдоль компоненты.
Что определяет длина вектора? Пусть она как то влияет на вторую производную (ускорение), например, будет пропорциональна ее величине.

Для простоты рассмотрим сплайн Безье третьего порядка.
И первую и вторую производную для сплайна Безье можно вычислить аналитически. Значение производной нам даст положение первой точки относительно нулевой. А значение второй производной - сместит вторую точку.
Но вот незадача, в этом случае меняются скорость и ускорение относительно конечной точки, т.е. смещается второй управляющий вектор, а этого нам никак не нужно. Значит наше предположение, что в пространстве кривая представляет собой сплайн Безье, не является верным.

Рассмотрение других форм полиномиальных сплайнов 3-го порядка приведут к такому же результату. Возможно, корректный результат дадут сплайны 5-го порядка с 6-ю управляющими точками вместо 4-x. Это можно проверить аналитически)).
То есть для двух точек и управляющих векторов в пространствах {X, t}, {Y, t}, {Z, t} в пространстве {X,Y,Z} должно быть шесть управляющих точек сплайна.

Другой вариант, когда  зависимости {X, t}, {Y, t}, {Z, t} сами представляют собой сплайны Безье P{X,t}(u), P{Y,t}(v), P{Z,t}(w). Если судить по видео из моего предыдущего сообщения, то там представлен именно этот вариант.
Кстати, в том же видео никаких управляющих точек в пространстве {X,Y,Z} не представлено. Ограничение перемещения управляющих точек сплайна Безье вдоль оси t, гарантирует монотонное возрастание t относительно параметра. Таким образом для каждого значения t имеется единственное вещественное значение параметра (u,v или w), которое может быть вычислено аналитически (корень решения кубического уравнения).

Таким образом, схема построения пространственной траектории такая - в пространствах {X,t}, {Y,t}, {Z,t} в виде F-curves задаются параметрические зависимости. Эти зависимости могут представлять собой функции вида X(t) (например, Easing curve) или сплайны P{X,t}(u) (например, Безье). Для определения пространственных координат для заданного значения t необходимо по этим зависимостям определить значения X,Y,Z. В случае X(t) - тривиально подставляем t, получаем результат. В случае сплайнов, решаем уравнение t(u)=t0 (t0 - текущий момент времени), получаем значение параметров (u,v,w), для которых получаем соответствующие значения X,Y и Z.

« Последнее редактирование: Декабрь 28, 2017, 10:03 от ssoft » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Декабрь 28, 2017, 10:58 »

Зависимая разбивка на компоненты - это когда рассматриваются один сплайн вида P{X,Y,Z}(t) или P{X,Y,Z,t}(u).
Независимая - когда для каждой пространственной компоненты отдельный сплайн P{X}(t) или P{X,t}(u), P{Y}(t) или P{Y,t}(v), P{Z}(t) или P{Z,t}(w).
Ага, вот так - ну тогда у меня есть и те и другие. Т.е. в первом случае компоненты X, Y. Z - один "вектор" и любая контрольная точка существует для всех компонент. Во втором случае у каждой компоненты свои контрольные точки, их число может быть разным. НО путь может интерактивно редактироваться только для первого случая (вектор), и это правильно, если поразмыслить во втором случае ничего разумного не получить. Собсно какой-то роли это не играет, в любом случае значения независимы

Ну ладно, значит что - надо попробовать взять производную, ничего другого не видно. Сегодня-завтра спробую, отпишусь
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.129 секунд. Запросов: 22.