Войти
ПрограммированиеФорумГрафика

[Решено] Перевод стрелок с кватернионами

Страницы: 1 2 3 Следующая »
#0
17:22, 12 дек. 2016

Чтобы объяснить суть того, что я хочу узнать, приведу такой пример:
есть часы, пусть у стрелок этих  часов будут кватернионы с осью вращения например вокруг Y. И однажды мне понадобилось перевести минутную стрелку так, чтобы она совпала с часовой. Для этого я беру Y-компоненту часовой стрелки, умножаю  на знак W-компоненты и вычитаю Y-компоненту минутной стрелки умноженную на знак W-компоненты, разница скажет в какую сторону и сколько нужно крутить минутную стрелку.
Вопрос есть ли в 3d графике специальная функция, которая делает то же самое, если есть, то как она называется.

PS: пользуюсь  glm::


#1
17:34, 12 дек. 2016

Тебе именно интерпалированный/анимированный поворот нужно? Очевидно чтобы поставить один объект в такой же разворот как и другой нужно взять его кватернион.
умножение кватерниона тебе даст (минутная стрелка)*(то что ищем)=(часовая стрелка) - рассуждая логически тебе нужно деление кватерниона. Это тоже умножение но один из них должен быть обратным. (минутная стрелка)*(обратная часовая стрелка)=(то что ищем)

Но вообще это можно выразить через скалярное произведение.

#2
17:49, 12 дек. 2016

slerp?

#3
17:55, 12 дек. 2016

Скорее mix для glm

#4
18:22, 12 дек. 2016

foxes
> mix
хм, интересно...

#5
19:58, 12 дек. 2016

Misanthrope
> slerp?
да, это то, что нужно! Спасибо!

#6
20:23, 12 дек. 2016

Нафига слерп, если тебе просто присваивание надо? Тебе разве нужны промежуточные значения?

#7
20:42, 12 дек. 2016

PANDA
> Тебе разве нужны промежуточные значения?
дискретно мыслишь :)

#8
21:24, 12 дек. 2016

Сижу теперь и не могу понять для чего могут понадобиться такие достаточно фейковые стрелки...
Programina, колись )

#9
22:58, 12 дек. 2016

facepalm
slerp мне уже не подходит, потому что D в

slerp(qa, qb, D);
должен меняться не линейно, а синусоидально, и с нахождением такого D есть трудность. Нужно более простое решение.

#10
23:25, 12 дек. 2016

programina
> а синусоидально
Это где написано?

#11
0:54, 13 дек. 2016

programina
> должен меняться не линейно, а синусоидально
ты гонишь!!1

#12
0:57, 13 дек. 2016

programina
> должен меняться не линейно, а синусоидально
зачем? O_o
кстати в курсе что D должен быть в диапазоне от 0 до 1 ?

#13
5:24, 13 дек. 2016

Балин, кто-нибудь уже скажет накуа все это? )

#14
8:16, 13 дек. 2016

Стрелка qa будет двигаться с замедлением при линейном нарастании D

qa = slerp(qa, qb, D);

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.