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

Вниз

Как повернуть вектор к вектору на определённый процент?   Найти похожие ветки 

 
Матриц   (2008-03-15 06:56) [0]

То есть два вектора V1 и V2. Если 0%, то значит берём вектор V1, если 100%, то вектор V2. А если промежуточное значение, то плавный поворот вокруг начала координат от одного к другому.

Можно ли это сделать быстро, без вычислений синусов и косинусов?


 
TUser ©   (2008-03-15 07:21) [1]

длины векторов подправь и сложи

V1 := V1 * (100 - PROCENT) / V1_length
V2 := V2 * PROCENT / V2_length
Vres := V1 + V2

будет плавно (угол между V1 И Vres на отрезке 0..100 является непрерывной и всюду дифференцируемой функцией от PROCENT)

кстати, а чем тебя не устраивают синусы?


 
Матриц   (2008-03-15 07:29) [2]

Спасибо. :)


> кстати, а чем тебя не устраивают синусы?


Скоростью. А в вычислении длины надо извлекать корень. Тоже не слишком быстро.


 
TUser ©   (2008-03-15 07:35) [3]

Ну, процессоры сейчас быстрые. У меня реально работает код, который поворачивает произвольный вектор вокруг данной оси на заданный угол. Все сделано на векторной алгебре. Синусы там есть. На скорость не жалуюсь. Хотя тут все, конечно, от задачи зависит.

зы. Кодом сейчас не поделюсь.


 
Матриц   (2008-03-15 07:42) [4]

Всё равно спасибо. :)


 
TUser ©   (2008-03-15 07:51) [5]

в принципе, даже если не делить на длину, то все равно будет плавно

то есть условию соотвествует (в понимании [1])

хотя, боюсь, это уже совсем не то, что тебе надо


 
MBo ©   (2008-03-15 14:49) [6]

Возможно, заинтересует также SLERP  - сферическая линейная интерполяция, при которой промежуточный единичный вектор поворачивается по дуге большого круга сферы от начального положения к конечному.


 
Правильный_Вася   (2008-03-15 15:51) [7]

а я не понял, что значит повернуть на процент
процент чего - угла, длины, отношения?


 
MBo ©   (2008-03-15 16:18) [8]

>Правильный_Вася
Пример - машина входит в поворот, меняется направление и сбрасывается скорость. Промежуточные значения вектора скорости можно интерполировать.


 
Homa   (2008-03-21 06:00) [9]


> MBo ©   (15.03.08 14:49) [6]
>
> Возможно, заинтересует также SLERP  - сферическая линейная
> интерполяция, при которой промежуточный единичный вектор
> поворачивается по дуге большого круга сферы от начального
> положения к конечному.


А где взять этот SLERP ?


 
Homa   (2008-03-22 02:59) [10]

Господа! Кто добрый, поделитесь пожалуйста функцийе SLERP для матрицы?
Вещь нужная. А Гугль что-то ничего толкового не находит.


 
capkoh ©   (2008-03-22 13:08) [11]

Насколько я знаю, с матрицами в чистом виде уже мало кто работает. В основном, все используют кватернионы, которые гораздо удобнее. В крайнем случае, если нужна матрица, в конце всех операций преобразуют результирующий кватернион в матрицу.

Кватернионы и SLERP есть тут:
http://sacredsoftware.net/tutorials/Quaternions/Quaternions.xhtml
http://www.gamedev.ru/users/wat/articles/quaternions?page=2


 
Homa   (2008-03-23 05:32) [12]

А как кватерниону задать длину векторов?


 
Homa   (2008-03-25 07:52) [13]

Люди!



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1206251473
Cyrax
2008-03-23 08:51
2008.05.04
"Сотрудник" (учебного заведения) по-английски....


2-1207590779
иван8511
2008-04-07 21:52
2008.05.04
Перемещение курсора в компоненте Edit


2-1207675052
gefest80
2008-04-08 21:17
2008.05.04
звук


15-1205930041
Elec3C
2008-03-19 15:34
2008.05.04
with в C++


15-1205908112
Slider007
2008-03-19 09:28
2008.05.04
С днем рождения ! 19 марта 2008 среда





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский