Что бы сравнить как разрабы написали в разных движках, и что бы не потерять.
*Популярные движки*
https://github.com/godotengine/godot/blob/158540e96ab225042c72eca… uaternion.cpp
https://github.com/urho3d/urho3d/blob/ca28b35c549ddc1ff848f309098… uaternion.cpp
https://github.com/rbfx/rbfx/blob/5fda6c21f105751c6ce409311462312… uaternion.cpp
https://github.com/OGRECave/ogre/blob/390755394410b6db5b14bbdcc33… uaternion.cpp
https://github.com/zaki/irrlicht/blob/master/include/quaternion.h
https://github.com/id-Software/DOOM-3-BFG/blob/1caba1979589971b5e… b/math/Quat.h
Получение доступа к эпиковскому репо
https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Sou… c/Math/Quat.h
https://github.com/EpicGames/UnrealEngine/blob/4.27/Engine/Source… c/Math/Quat.h
*Всякие разные либы и движки*
https://github.com/NVIDIAGameWorks/PhysX/blob/93c6dd21b545605185f… tion/PxQuat.h
https://github.com/Groovounet/glm/blob/e1afbc9ceaacbc9aed7bb896d2… uaternion.inl
https://github.com/Groovounet/glm/blob/e1afbc9ceaacbc9aed7bb896d2… uaternion.hpp
https://github.com/KeenSoftwareHouse/SpaceEngineers/blob/master/S… Quaternion.cs
https://github.com/orbitersim/orbiter/blob/main/Src/Orbiter/Vecmat.cpp
https://github.com/storm-devs/storm-engine/blob/develop/src/libs/… /quaternion.h
https://github.com/assimp/assimp/blob/c48507beea04d54ec41ee5f15a5… uaternion.inl
https://github.com/castle-engine/castle-engine/blob/e1ed139bdf11a… aternions.pas
Полезные ссылки
https://gpuopen.com/learn/matrix-compendium/matrix-compendium-intro/
UEшные доступны не только лишь всем.
в тех что выше, нашел пару интересного
Noir
> UEшные доступны не только лишь всем.
https://docs.unrealengine.com/5.1/en-US/downloading-unreal-engine-source-code/
Есть еще GLM.
Не увидел в этих реализациях функций для конвертации кватерниона в вектор (направление) и обратно, у меня они зачем-то есть.
/A\
есть там Quaternion2Velocity у меня этого как раз не было. взял, вдруг пригодится =)
Вот Иррлихт
https://github.com/zaki/irrlicht/blob/master/include/quaternion.h
Да, GLM уж тогда тоже добавляй, как выше писали. Гитхаб, по запросу Quaternion, выдаёт 451 repository results Это только на плюсах ))
float Quaternion::Angle() const { return 2 * Acos(w_); }
кстати такое себе. в результате всяких перемножений и инверсий у кватерниона может получиться
четвертая компонента типа 1.000000005
и вернется NAN
Почему все изобретают свою математику, а не используют уже сделанную? И вообще давно пора включить в стандарт с++ 3дешную математику... И тогда количество велосипедов уменьшится в разы.
stratego
наверное потому что у разрабов свои ожидания. вот одни тут считают что все должно работать влоб, и никаких проверок. получился NAN или другая хрень, приложение пало - сам виноват, данные подготовил плохо. я например считаю, что функции должны быть сделаны отказоустойчиво пусть не всегда логично. в юнити например так.
Noir
> кстати такое себе. в результате всяких перемножений и инверсий у кватерниона
> может получиться
> четвертая компонента типа 1.000000005
> и вернется NAN
Если во флоатах делать, то у меня всё нормально - выдаёт ноль, ну если точность повысить, тогда - уже облом )) Не надо гнаться за точностью, и да не огребёте проблем ))
Noir
> кстати такое себе.
+1
Использование обратных тригонометрических функций, отличных от atan2, в 90% случаев говнокод.
Данный пример — яркая иллюстрация этого правила.
Storm-Engine, движок Корсаров.
https://github.com/storm-devs/storm-engine/blob/develop/src/libs/… /quaternion.h
IGamedevStudio, напиши что у них у всех одинаково сделано и какие есть различия и фишки. На вскидку так там всё очень похоже..
> https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Sou…
> c/Math/Quat.h
> https://github.com/EpicGames/UnrealEngine/blob/4.27/Engine/Source…
> c/Math/Quat.h
Что-то я туда попасть не могу, 404
stratego
> напиши что у них у всех одинаково сделано и какие есть различия и фишки.
А я всё и не сравнивал, только то что мне было нужно посмотреть.
В анриле умножение на вектор отличается, и ещё я пока не понял FQuat::MakeFromEuler в 4.27
Кстати было бы не плохо получить ссылки для ламберярда и GLM, у мну нет их на компе, а гугл через гит вытаскивает всё подряд.
И не понял что там у крайтеков с доступом к сурсам.
Раз уж собирать нужно все популярные движки и самые мощные либы.
IGamedevStudio
> Кстати было бы не плохо получить ссылки для ламберярда и GLM
https://github.com/Groovounet/glm/blob/e1afbc9ceaacbc9aed7bb896d2… uaternion.hpp
https://github.com/Groovounet/glm/blob/e1afbc9ceaacbc9aed7bb896d2… uaternion.inl
Там на два файла раскинуто
stratego
> Storm-Engine, движок Корсаров.
> https://github.com/storm-devs/storm-engine/blob/develop/src/libs/…
> /quaternion.h
Не понравился?