Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Victor Anikeev                       2:5043/3.88    28 May 2003  18:32:06
 To : Gapon Dmitry
 Subject : кватернион и углы в декартовой системе
 -------------------------------------------------------------------------------- 
 
 27 May 03 21:07, Gapon Dmitry -> Victor Anikeev:
 
  GD>  Голова сегодня уже совсем не соображает...Если не трудно можно
  GD> поподробнее? Пршу прщения, но x, y, z - чего? Если можно объясни на
  GD> примере. У меня езь тело, повернутое скажем на 45 градусов отн оси y,
  GD> то бишь направо. Теперь я его поворачиваю на 45 градусов относительно
  GD> собственной продольной оси, т.е. той которая была осью z до того как
  GD> его повернули относительно оси y. Для этого я делаю мцу поворота
  GD> относительно оси x и домножаю ее на мцу поворота отн оси z. У меня езь
  GD> конечная мца... Hо как теперь получить углы
  GD> относительно осей x, y, z?
 
   Твоя последняя матрица (которая получилась после перемножения двух
 предыдущих) - это форма записи направляющих векторов новой системы координат
  в которой находится твое тело (впрочем и все остальные матрицы афинных
 преобразований - тоже).
  Если считать, что _изначально_ в исходной системе
  координат тело HЕ было повернуто, то и в новой системе то же самое.
  Изменилась система координат.
  Осталось только найти углы между соответсвующими осями новой и старой
  систем координат, так ты найдешь углы поворота своего тела относительно
  _старой_ системы.
 
   В зависимости от типа матриц которые ты используешь возможно понадобится
 транспонирование. Тут ты сам разберешься. Значит твоя последняя матрица:
 
  xx yx zx 0          xx xy xz dx
  xy yy zy 0   или    yx yy yz dy
  xz yz zz 0          zx zy zz dz
  dx dy dz 1           0  0  0  1
 
  (Первый вид более предпочтителен, потому что тогда порядок умножения
  матриц естественнен, то есть не надо перемножать их в обратном порядке
  относительно последовательности преобразований).
 
  Hаправляющий вектор (ортом кажется называется?) новой оси OX
  имеет координаты {xx, xy, xz}. Все остальные соответственно.
 
  По-хорошему они должны быть нормированы (то есть их длина должна быть
  равна единице - sqrt(xx*xx+xy*xy+xz*xz) == 1).
  Hо только в том случае если ты не делал масштабирование.
  Так же очевидно, что они все перпендикулярны  друг другу.
 
  {dx, dy, dz} - это вектор переноса начала координат старой системы в новую.
  Или, говоря по-другому, координаты начала новой системы в старой.
  В данный момент это нас не интересует, так как углы от него не зависят.
 
  Орты старой системы координат известны:
  OX: {1, 0, 0}   OY: {0, 1, 0}   OZ: {0, 0, 1}
 
  Hайти угол между соотвствующими векторами  (осями координат)
  не представляет трудности.
 
   cos a = (x'* x + y'* y + z'* z) / (sqrt(x'*x'+y'*y'+z'*z')*sqrt(x*x+y*y+z*z))
 
   То есть угол поворта относительно оси X равен:
 
   arccos( 1 * xx + 0 * xy + 0 * xz) / (sqrt(xx*xx+xy*xy+xz*xz) * 1) =
   = arccos(xx)
 
  Вот, собсно, и все.
 
  Да, еще. Можно и не делить, ведь длина каждого орта равна единице, если
  ты все правильно делаешь (в знаменателе произведение длин векторов).
 
   Извини, что я так разжевываю, просто не знаю на каком уровне ты знаешь
   свойства векторов, матриц и т.п. ПОэтому не обращай внимания.
 
   В качестве дополнительно литературы очень рекомендую следущие книги:
   1. Шикин А.В., Боресков А.В. Компьютерная графика. Динамика,
      реалистические изображения.
      М.: ДИАЛОГ-МИФИ, 1996. - 288 с.
   2. Шикин Ф.В., Боресков А.В. Компьютерная графика. Полигональные модели.
      М.: ДИАЛОГ-МИФИ, 2000. - 464 с.
 
   Обе книжки можно спокойно заказать через интернет. Я так и делал. Стоят
  они недорого.
 
   2All: Если я где-то неправильно использовал термины или сделал ошибку
   - поправьте меня, я не хочу заблуждаться и передавать свои заблуждения
 другим. Сенкс.
 
    Было не очень страшно. Пока.                              *Victor*
 
     [Сейчас пьется: Martini Bianco со льдом]
 ... [.asm.cpp.pas.] [q3.level.design] [demo.making] [i.girls]
 -+- [mgl@pisem.net] [mglmap.narod.ru] [icq91208291]
  + Origin: Южно-Сахалинск, Россия (2:5043/3.88)
 
 ===  end file  ===
    Было не очень страшно. Пока.                              *Victor*
 
     [Сейчас пьется: Martini Bianco со льдом]
 ... [.asm.cpp.pas.] [q3.level.design] [demo.making] [i.girls]
 --- [mgl@pisem.net] [mglmap.narod.ru] [icq91208291]
  * Origin: Южно-Сахалинск, Россия (2:5043/3.88)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 кватернион и углы в декартовой системе   Gapon Dmitry   27 May 2003 10:56:20 
 кватернион и углы в декартовой системе   Victor Anikeev   27 May 2003 23:10:58 
 кватернион и углы в декартовой системе   Gapon Dmitry   27 May 2003 21:07:22 
 кватернион и углы в декартовой системе   Victor Anikeev   28 May 2003 18:32:06 
 кватернион и углы в декартовой системе   Alex Astafiev   27 May 2003 22:40:10 
Архивное /ru.algorithms/28423ed46612.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional