2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4
 
 
Сообщение27.04.2009, 22:42 
А все таки почему разница в результатах универсальной и моей матрицы?

 
 
 
 
Сообщение27.04.2009, 23:12 
Разница может быть (только?) в том, что матрица, которую Вы называете "универсальной", и матрица, которую Вы называете "своей матрицей", различны. Ну приведите их (матриц) численные значения. И пояснения: универсальная - это типа от меня и из Википедии. А Ваша --- это кто? Это по методам GAA (который хитро слинял, и даже моё паясничание не вернуло его взад, хотя бы помодерировать чуть-чуть)?

 
 
 
 
Сообщение27.04.2009, 23:31 
Думаете увидит :lol: "Моя" матрица скажем так сделана по мотивам GAA, но немного отличается, уж слишком мудрены, для меня, его повороты.

 
 
 
 
Сообщение28.04.2009, 10:29 
stuk писал(а):
Моя матрица собственного изготовления
$$
\begin{array}{l}
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}^{-1}
%
\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}^{-1}
%
\times \\[10pt] \times
%
\begin{pmatrix} 
\cos\gamma & \sin\gamma & 0\\ 
-\sin\gamma & \cos\gamma & 0\\
0 & 0 & 1 \\
\end{pmatrix}
%
\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}
%
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}\end{array}
$$
Правда результат немного отличается от универсальной.

Проблема, видимо, в том, что Ваша матрица есть результат неправильного решения довольно сложной задачки. Где именно не так --- я, признаться, не разбирался. Для этого мне надо купить принтер, всё распечатать и устроить себе 2 часа бесконечной скуки (например, поехать на электричке в Москву или пойти на пляж). Я пока к этому не готов. Причиной может быть, в частности, когда-то обнаруженное Ваше непонимание положительных и отрицательных углов поворота. Замечу, что в матрицах, которые Вы обращаете, достаточно заменить угол $\alpha$ или $\beta$ на $-\alpha$ или $-\beta$ --- получится та cамая обратная матрица:
$$
\small
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}^{-1}
=
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos(-\alpha) & -\sin(-\alpha) \\
0 & \sin(-\alpha) & \cos(-\alpha) \\
\end{pmatrix}
=
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & \sin\alpha \\
0 & -\sin\alpha & \cos\alpha \\
\end{pmatrix}
$$
В частности, при $\alpha=\pi/2$ и $\beta=0$ (такие подстановки --- способ поиска ошибок) Ваша матрица и "универсальная" дают принципиально разные повороты.

Игры с 3D-программой должны давть полное совпадение с т.н. "универсальной" матрицей.

Добавлено спустя 29 минут 13 секунд:

$$
\begin{array}{l}
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}^{-1}
%
\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}^{-1}
%
\times \\[10pt] \times
%
\begin{pmatrix} 
\cos\gamma & \sin\gamma & 0\\ 
-\sin\gamma & \cos\gamma & 0\\
0 & 0 & 1 \\
\end{pmatrix}
%
\underbrace{
\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}
%
\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}
\times
\begin{pmatrix} 
\mbox{вектор,} \\
\mbox{который мы} \\
\mbox{поворачиваем}
\end{pmatrix}
}_{\mbox{получение вектора ОА}}\end{array}
$$

Итак, первым делом Вы поворачиваете на $\alpha$, потом на $\beta$, т.е. конструируете вектор $OA$. Стало быть, чтобы надеяться на успех, Вашу матрицу (произведение пяти матриц) надо умножать на
$$\begin{pmatrix} 
\mbox{вектор,} \\
\mbox{который мы} \\
\mbox{поворачиваем}
\end{pmatrix}=(0,0,1)$$, а мы все думаем, что её надо умножать на
$$\begin{pmatrix} 
\mbox{вектор,} \\
\mbox{который мы} \\
\mbox{поворачиваем}
\end{pmatrix}=OA$$! Даже разобравшись с этим видно, что дальнейшие повороты задачу не решают.

Добавлено спустя 46 минут 13 секунд:

Рациональные зёрна проглядываются, обсудим, если угодно, попозже. Или, может, зачёт уже в кармане и всё до лампочки?

 
 
 
 
Сообщение28.04.2009, 10:36 
Что то я запутался мы поворачиваем вокруг вектора $OA$ точку $B (X_B, Y_B, Z_B)$. И эти две матрицы
$\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}$$\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}$
служат как раз для перевода координат точки $B$, в систему координат в которой ось $OZ$ совпадает с вектором $OA$.

Хотя сейчас понял Вашу мысль, тем умножением мы должны получить направляющие косинусы вектора $OA$ т.е. $U_x, U_y, U_z$. Только вот не знаю состыкуется ли это с планом решения GAA
GAA в сообщении #206964 писал(а):
Приведу очевидную схему решения.
1. Задайте вторую систему координат , в которой ось будет сонаправлена с вектором .
2. Найдите координаты точки в этой системе координат.
3. Найдите координаты точки (в системе ) после поворота на угол вокруг оси .
4. Найдите координаты точки в исходной системе координат.


Хочу напомнить что я получил идентичный результат с универсальной матрицей когда нарушил коммутативность матриц с углами $\alpha$ и $\beta$ т.е.
$\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}^{-1}$$\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}^{-1}$ $ \begin{pmatrix} 
\cos\gamma & \sin\gamma & 0\\ 
-\sin\gamma & \cos\gamma & 0\\
0 & 0 & 1 \\
\end{pmatrix}$x
x$\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}$$\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}$ $\begin{pmatrix} 
6,5367\\
73,5708\\
-13,0236\\
\end{pmatrix}$$=\begin{pmatrix} 
39,9884\\
62,3664\\
-11,6776\\
\end{pmatrix}$

Вот такие не понятности….

Добавлено спустя 4 минуты 36 секунд:

На счет зачета и кармана Вы правы :D Но все таки хотелось бы разобраться до конца :roll:

 
 
 
 
Сообщение28.04.2009, 12:23 
stuk в сообщении #209015 писал(а):
Но все таки хотелось бы разобраться до конца
Трогательно и похвально :) .

Далее я, по-видимому, предлагаю то же, что и GAA, только другими словами, более близкими к моему мозгоустройству.

Первый подход.
Имеется вектор --- ось вращения $OA=(\ldots)$. Поскольку мы не умеем поворачивать вокруг неё, но умеем, например, вокруг оси $OZ$, то поищем преобразование $T$, такое, чтобы оно нашу ось выставило вертикально. Раз уж вектор $OA$ был получен из $OZ$ двумя поворотами, эту подзадачу, видимо, решают два обратных поворота, сначала на $-\beta$, потом на $-\alpha$: $T=T_{-\alpha}\cdot T_{-\beta}$. Убедитесь, что да, векторочек ОА встал вертикально: $T\cdot OA=(0,0,1)$. Теперь совершаете известный поворот вокруг оси $OZ$ на $\gamma$ (описываемый некой матрицей $T_\gamma$). Теперь совершаете преобразование, обратное $T$. Итог: искомая матрица --- $T^{-1}T_\gamma T$. В частности, если было $T=T_2 T_1$, то итог будет $(T_2 T_1)^{-1}T_\gamma T_2 T_1=T_1^{-1} T_2^{-1}T_\gamma T_2 T_1$.
Самопровека: действие полученной матрицы на ось $OA$ должно оставлять её на месте при любом $\gamma$.


Второй подход.
Но по-хорошему задачу надо решать в общей постановке, т.е. заняться чисто выводом той самой универсальной формулы. И желательно в приличных обозначениях. Забыть про Ваш конкретный смысл углов $\alpha,\beta$: это некий частный случай, который потом можно подставлять в универсальную формулу.

Имеется вектор --- ось вращения $\Omega=(u_x=\cos \alpha,\:u_y=\cos\beta, u_z=\cos\gamma)$ ($u_x^2+u_y^2+u_z^2$; или возьмите сферические координаты, как предлагал GAA) . Поскольку мы не умеем поворачивать вокруг неё, но умеем, например, вокруг оси $OZ$, то поищем преобразование $R$, такое, чтобы оно нашу ось выставило вертикально: $R\Omega=OZ=(0,0,1)$. Вам было проще искать такой поворот, когда углы $\alpha,\beta$ трактовались в Вашем смысле (наша полемика про "составляют" --- "повёрнуты"). Что же, используйте это, посмотрите например те же проекции, найдите переход от одной терминологии к другой. Или поймите, что это предварительное преобразование есть поворот на некий угол $\xi=?$ вокруг оси $\Omega'=\Omega\times OZ$ (векторное произведение; не забыть потом про нормировку). Попробуйте его наглядно представить и реализовать. Далее --- тот же поворот на угол $\theta$ или $\omega$ (потому что обозначение $\gamma$ нам теперь не нравится) вокруг $OZ$ и обратное преобразование, $R^{-1}$.
Самопровека: действие полученной матрицы на ось $\Omega$ должно оставлять её на месте при любом $\theta$.

Добавлено спустя 20 минут 48 секунд:

И поймите-осознайте, что если Вы вектор $v_0$ повернули матрицей $M_1$, то получили вектор $v_1=M_1v_0$.
Если Вы затем вектор $v_1$ повернули матрицей $M_2$, то получили вектор $v_2=M_2v_1=M_2(M_1v_0)=M_2M_1v_0=(M_2M_1)v_0$.
Если Вы затем вектор $v_2$ повернули матрицей $M_3$, то получили вектор $v_3=M_3v_2=M_3M_2M_1v_0$.
Эти три операции можно заменить одним действом, матрицей $M=M_3M_2M_1$.
Тем самым я обосновал Вам порядок матриц в произведении --- 3, 2, 1 для последовательности действий 1, 2, 3.

 
 
 
 
Сообщение28.04.2009, 17:01 
stuk писал(а):
Хочу напомнить что я получил идентичный результат с универсальной матрицей когда нарушил коммутативность матриц с углами $\alpha$ и $\beta$ т.е.
$\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}^{-1}$$\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}^{-1}$ $ \begin{pmatrix} 
\cos\gamma & \sin\gamma & 0\\ 
-\sin\gamma & \cos\gamma & 0\\
0 & 0 & 1 \\
\end{pmatrix}$x
x$\begin{pmatrix} 
1 & 0 & 0 \\
0 & \cos\alpha & -\sin\alpha \\
0 & \sin\alpha & \cos\alpha \\
\end{pmatrix}$$\begin{pmatrix} 
\cos\beta & 0 & -\sin\beta \\
0 & 1 & 0 \\
\sin\beta & 0 & \cos\beta \\
\end{pmatrix}$ $\begin{pmatrix} 
6,5367\\
73,5708\\
-13,0236\\
\end{pmatrix}$$=\begin{pmatrix} 
39,9884\\
62,3664\\
-11,6776\\
\end{pmatrix}$
Вот такие не понятности….

1. Так вычислять нельзя. (И дело не в том, что повороты надо выполнять на углы $-\beta$ и $-\alpha$, а в том, что для выполнения операций в «обратную сторону», поворот на угол $-\beta$ надо делать не вокруг оси $OY$, а вокруг оси $OY’$. Но координаты вектора $OB$, на который будет умножаться матрица поворота на угол $\beta$, заданы в системе $XYZ$!)
Если все же формально вычислить матрицу поворота, то при $\alpha = 8$º, $\beta = 5$º, подставляя вместо $\alpha$ и $\beta$ в Ваши формулы $-\alpha$ и $-\beta$, получим
\small \begin{pmatrix}
0.8778948669 & 0.4755201000 & 0.05640245659 \\
-0.4725647074 & 0.8793613030 & -0.05836348186 \\
-0.07735114647 & 0.0245831907 & 0.9967007911 \\
\end{pmatrix}\begin{pmatrix}
6.5367 \\
73.5708 \\
-13.0236 \\
\end{pmatrix} =\small\begin{pmatrix}
39.98836652 \\
62.36640347 \\
-11.67764865 \\
\end{pmatrix}.
Если вместо $\alpha$ и $\beta$ подставить значения 8º и 5º, то получим ответ
\small\begin{pmatrix}
41.45749258 \\
60.84619819 \\
-14.28361619
\end{pmatrix}.

2. В данном случае \small$ u = (-0.08630754907, -0.1391731010, 0.9864997997)$. По приведенным мною в предыдущих сообщениях формулам (тут и тут), находим \small$\phi = 0.1645034105$, \small$\psi = 2\pi - 2.125897026 = 4.157288282$

\small\begin{pmatrix}
0.8778948669 & -0.4725647073 & -0.07735114670 \\
0.4755200999 &  0.8793613030 &  0.02458319070 \\
0.05640245677& -0.05836348204 & 0.9967007910 \\
\end{pmatrix}\begin{pmatrix}
6.5367 \\
73.5708 \\
-13.0236 \\
\end{pmatrix} =\small\begin{pmatrix}
-28.02103780 \\
67.48348515 \\
-16.90579454 \\
\end{pmatrix}.

Тот же результат получим, используя формулу из Википедии.

 
 
 
 
Сообщение28.04.2009, 18:45 
Большое спасибо Алексей К. и GAA за Ваши объяснения и терпение. Не скажу что все стало абсолютно понятно, но теперь очень многое прояснилось и с каждым перечитыванием Ваших объяснений проясняется все более :P .

 
 
 [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group