Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [Решено] Перевод стрелок с кватернионами

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

Поделиться

Страницы: 1 2 3 Следующая

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

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

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

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

Правка: 12 дек. 2016 17:46

MisanthropeПостоялецwww12 дек. 201617:49#2
slerp?
foxesПостоялецwww12 дек. 201617:55#3
Скорее mix для glm
programinaЗабаненwww12 дек. 201618:22#4
foxes
> mix
хм, интересно...
programinaЗабаненwww12 дек. 201619:58#5
Misanthrope
> slerp?
да, это то, что нужно! Спасибо!
PANDAПостоялецwww12 дек. 201620:23#6
Нафига слерп, если тебе просто присваивание надо? Тебе разве нужны промежуточные значения?
programinaЗабаненwww12 дек. 201620:42#7
PANDA
> Тебе разве нужны промежуточные значения?
дискретно мыслишь :)
DronasПостоялецwww12 дек. 201621:24#8
Сижу теперь и не могу понять для чего могут понадобиться такие достаточно фейковые стрелки...
Programina, колись )
programinaЗабаненwww12 дек. 201622:58#9
facepalm
slerp мне уже не подходит, потому что D в
slerp(qa, qb, D);
должен меняться не линейно, а синусоидально, и с нахождением такого D есть трудность. Нужно более простое решение.
DimichПостоялецwww12 дек. 201623:25#10
programina
> а синусоидально
Это где написано?
nullptrПостоялецwww13 дек. 20160:54#11
programina
> должен меняться не линейно, а синусоидально
ты гонишь!!1
MisanthropeПостоялецwww13 дек. 20160:57#12
programina
> должен меняться не линейно, а синусоидально
зачем? O_o
кстати в курсе что D должен быть в диапазоне от 0 до 1 ?
DronasПостоялецwww13 дек. 20165:24#13
Балин, кто-нибудь уже скажет накуа все это? )
programinaЗабаненwww13 дек. 20168:16#14
Стрелка qa будет двигаться с замедлением при линейном нарастании D
qa = slerp(qa, qb, D);

Страницы: 1 2 3 Следующая

/ Форум / Программирование игр / Графика

2001—2017 © GameDev.ru — Разработка игр