Алгоритм синхронизации — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
м (Новая: Бла бла... мысли вслух * В произвольных ортогональных криволинейных координатах в трехмерном простра...)
 
Строка 1: Строка 1:
Бла бла... мысли вслух
+
Здесь будет рассмотрена математическая составляющая алгоритмов синхронизации физики. Понимающих в этом деле, просьба прокомментировать.
  
* В произвольных ортогональных криволинейных координатах в трехмерном пространстве <math>q_1,\ q_2,\ q_3</math>:
+
== Построение сплайна ==
<math>\Delta f (q_1,\ q_2,\ q_3) = \operatorname{div}\,\operatorname{grad}\,f(q_1,\ q_2,\ q_3) = </math>
+
 
: <math>=\frac{1}{H_1H_2H_3}\left[ \frac{\partial}{\partial q_1}\left( \frac{H_2H_3}{H_1}\frac{\partial f}{\partial q_1} \right) + \frac{\partial}{\partial q_2}\left( \frac{H_1H_3}{H_2}\frac{\partial f}{\partial q_2} \right) + \frac{\partial}{\partial q_3}\left( \frac{H_1H_2}{H_3}\frac{\partial f}{\partial q_3} \right)\right],</math>
+
Для синхронизации была выбрана форма кубических сплайнов, при которой за основу берутся значения функции и ее производной в двух точках.
<br />где <math>H_i\ </math> — [[коэффициенты Ламе]].
+
 
 +
Свойства сплайна:
 +
:<math>s(t_i) = f(t_i) = , \quad s'(t_i) = f'(t_i)\!</math>
 +
 
 +
Уравнение сплайна:
 +
:<math>s(t) = a + bt + ct^2 + dt^3\!</math>
 +
 
 +
 
 +
Для нахождения коэффициентов <math>a, b, c, d</math> записываем систему уравнений:
 +
:<math>\begin{cases}
 +
a + bt_0 + ct_0^2 + dt_0^3 = f(t_0) \\
 +
a + bt_1 + ct_1^2 + dt_1^3 = f(t_1) \\
 +
b + 2ct_0 + 3dt_0^2 = f'(t_0) \\
 +
b + 2ct_1 + 3dt_1^2 = f'(t_1)
 +
\end{cases}
 +
</math>
 +
 
 +
 
 +
Подставляем известные значения в правой части системы (даны по условию):
 +
:<math>\begin{cases}
 +
a + bt_0 + ct_0^2 + dt_0^3 = x_0 \\
 +
a + bt_1 + ct_1^2 + dt_1^3 = x_1 \\
 +
b + 2ct_0 + 3dt_0^2 = v_0 \\
 +
b + 2ct_1 + 3dt_1^2 = v_1
 +
\end{cases}
 +
</math>
 +
 
 +
 
 +
Поскольку сплайн не зависит от конкретных значений <math>t_0</math> и <math>t_1</math> положим <math>t_0 = 0</math>, а <math>t_1 = t</math>. В результате, пара уравнений становится тривиальной:
 +
:<math>\begin{cases}
 +
a = x_0 \\
 +
a + bt_1 + ct_1^2 + dt_1^3 = x_1 \\
 +
b = v_0 \\
 +
b + 2ct_1 + 3dt_1^2 = v_1
 +
\end{cases}
 +
</math>
 +
 
 +
 
 +
Заменяем в оставшихся уравнениях известные теперь коэффициенты и получаем конечную систему:
 +
:<math>\begin{cases}
 +
x_0 + v_0t_1 + ct_1^2 + dt_1^3 = x_1 \\
 +
v_0 + 2ct_1 + 3dt_1^2 = v_1
 +
\end{cases}
 +
</math>
 +
 
 +
 
 +
После нехитрых манипуляций, получаем выражения для оставшихся коэффициентов:
 +
:<math>\begin{cases}
 +
c = \frac{3x_1 - 3x_0 - 2v_0t - v_1t}{t^2} \\
 +
d = \frac{v_1t - 2x_1 + 2x_0 + v_ot}{t^3}
 +
\end{cases}
 +
</math>

Версия 15:55, 22 октября 2008

Здесь будет рассмотрена математическая составляющая алгоритмов синхронизации физики. Понимающих в этом деле, просьба прокомментировать.

Построение сплайна

Для синхронизации была выбрана форма кубических сплайнов, при которой за основу берутся значения функции и ее производной в двух точках.

Свойства сплайна:

<math>s(t_i) = f(t_i) = , \quad s'(t_i) = f'(t_i)\!</math>

Уравнение сплайна:

<math>s(t) = a + bt + ct^2 + dt^3\!</math>


Для нахождения коэффициентов <math>a, b, c, d</math> записываем систему уравнений:

<math>\begin{cases}

a + bt_0 + ct_0^2 + dt_0^3 = f(t_0) \\ a + bt_1 + ct_1^2 + dt_1^3 = f(t_1) \\ b + 2ct_0 + 3dt_0^2 = f'(t_0) \\ b + 2ct_1 + 3dt_1^2 = f'(t_1) \end{cases} </math>


Подставляем известные значения в правой части системы (даны по условию):

<math>\begin{cases}

a + bt_0 + ct_0^2 + dt_0^3 = x_0 \\ a + bt_1 + ct_1^2 + dt_1^3 = x_1 \\ b + 2ct_0 + 3dt_0^2 = v_0 \\ b + 2ct_1 + 3dt_1^2 = v_1 \end{cases} </math>


Поскольку сплайн не зависит от конкретных значений <math>t_0</math> и <math>t_1</math> положим <math>t_0 = 0</math>, а <math>t_1 = t</math>. В результате, пара уравнений становится тривиальной:

<math>\begin{cases}

a = x_0 \\ a + bt_1 + ct_1^2 + dt_1^3 = x_1 \\ b = v_0 \\ b + 2ct_1 + 3dt_1^2 = v_1 \end{cases} </math>


Заменяем в оставшихся уравнениях известные теперь коэффициенты и получаем конечную систему:

<math>\begin{cases}

x_0 + v_0t_1 + ct_1^2 + dt_1^3 = x_1 \\ v_0 + 2ct_1 + 3dt_1^2 = v_1 \end{cases} </math>


После нехитрых манипуляций, получаем выражения для оставшихся коэффициентов:

<math>\begin{cases}

c = \frac{3x_1 - 3x_0 - 2v_0t - v_1t}{t^2} \\ d = \frac{v_1t - 2x_1 + 2x_0 + v_ot}{t^3} \end{cases} </math>

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты