Я использую expression2 для программирования поведения в моде Гарри (http://wiki.garrysmod.com/?title=Wire_Expression2)
Хорошо, установим прецедент. В Gmod у меня есть блок, и я в полной растерянности, как заставить его вращаться вокруг 3 векторов вверх, вниз и вправо (которые являются локальными. Т.е. 0). По сути, из 3 векторов я бы хотел получить местный Pitch / Roll / Yaw. Под Local Pitch Roll Yaw я подразумеваю, что они полностью независимы друг от друга, обеспечивая истинное трехмерное вращение Так, например; если я поставлю свое ремесло так, чтобы его нос был параллелен полу, X, Y, Z были бы 0,0,0. Если я поверну его параллельно полу (World and Local Yaw) на 90 градусов, то сейчас 0, 0, 90. Если я затем поверну его (World Roll, Local Pitch), то на 180 градусов, сейчас 180, 0, 90. уже изученные кватернионы, однако я не верю, что должен публиковать здесь свой код, поскольку я думаю, что заново изобретал колесо.
Я знаю, что не очень хорошо объяснил, но считаю, что проблема довольно общая. Любая помощь, которую кто-либо может предложить, высоко ценится.
О, я бы тоже хотел избежать трюка.
По сути, вычисление вращения вокруг каждого из векторов ремесла вверх / вперед / вправо с использованием векторов вверх / вперед / вправо.
Проще говоря, общая реализация, а не специфичная для Gmod, вполне подойдет.