Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Поворот вектора.   Найти похожие ветки 

 
йцукен   (2004-12-20 19:47) [0]

Даны единичные вектора  a1(x1,y1,z1) и a2(x2,y2,z2)

Как повернуть вектор a1 в направление вектора a2 на угол  alpha?


 
MBo ©   (2004-12-21 08:05) [1]

P,Q - исходные точки
Fi- угол между векторами OP,OQ
t-параметр интерполяции

1. Получаем угол Fi между векторами OP и OQ через скалярное произведение.

2. Получаем единичный вектор u, лежащий на оси вращения - векторное произв.

3. Координаты точки с параметром t 0..1 на искомой дуге -
P*[M=Матрица вращения на угол Alpha=t*Fi вокруг оси, проходящей через O c направл. вектором u]

можешь также погуглить по SLERP - spherical linear interpolation
Я на такое выражение наткнулся:
slerp(t,P,Q) = [sin((1-t)*Fi)*P+sin(t*Fi)*Q]/sin(Fi)
однако в нем была ошибка - отсутствовало Q во втором слагаемом, так что до использования лучше досконально проверить

SLERP, кстати, несложно считается при кватернионном представлении.


 
Da Stranger   (2004-12-21 11:18) [2]

Если на GLScene, то используй функцию VectorAngleLerp(a1,a2,t) из VectorGeometry, где t - степень поворота. Если t=0, то полученный вектор будет совпадать с a1, если t=1, то с a2. Если 0<t<1, то он будет между ними.


 
йцукен   (2004-12-21 17:31) [3]

Всем большое спасибо.
Попробую разобраться.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.047 c
8-1101885466
Галинка
2004-12-01 10:17
2005.03.20
Загрузить *.jpg файл в TBitmap


6-1105529569
Diaskhan
2005-01-12 14:32
2005.03.20
Как написать клиент отправки почты под ИНДИ


4-1106238066
volser
2005-01-20 19:21
2005.03.20
CreateRemoteThread???


1-1109925653
antoxa
2005-03-04 11:40
2005.03.20
Подскажите, как работать с TClientDataSet?


1-1109880961
Димон
2005-03-03 23:16
2005.03.20
Вопрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский