Повоpот в 3d
- From
- Eugene Goncharuk (2:5045/27.51)
- To
- Victor A. Pavlov
- Date
- 2002-08-03T22:04:26Z
- Area
- RU.ALGORITHMS
Как поживаете, Victor ?
Мои бортовые системы запеленговали, что в Пятница Август 02 2002 11:25, Victor A. Pavlov писал Victor A. Pavlov:
VAP>> произвольлной прямой. Имеется более быстрый (и более простой)
VAP>> метод поворота точки на произвольный угол вокруг произвольной
VAP>> прямой в постранстве.
VP> Приношу извинения за опечатки. Правильный алгоритм выглядит так:
VP> Начальные данные: _
VP> Точка задается радиус-вектором p=(px,py,pz).
VP> Угол задается числом phi (в радианах).
VP> _
VP> Прямая (ось) задается, двумя векторами: радиус-вектором точки на
VP> прямой s =
VP> _ _ (sx,sy,sz) и вектором
VP> направления n=(nx,ny,nz), |n|=1.
VP> _ _ _ _ _ _
VP> 1. s := s+n*(n&(p-s)); _ _
VP> операция & - скалярное произведение векторов: a&b=ax*bx+ay*by+az*bz
VP> ___ _ _
VP> 2. tmp := p-s;
VP> _ ___ ___ _ _
VP> 3. p' := tmp*cos(phi)+(tmp^n)*sin(phi)+s; _ _
VP> операция ^ - векторное произведение векторов:
VP> a^b=(ay*bz-az*by,az*bx-ax*bz, ax*by-ay*bx)
VP> _
VP> Точка p' - и есть результуриющая точка.
Это всё конечно весело. Но как наиболее красиво, быстро и грамотно реализовать поворот камеры в 3D аля Descent (игрушка такая есть) ?
C уважением, Eugene Goncharuk.
--- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС UNREG
* Origin: Ну усе... Рэгламент! (2:5045/27.51)