Физика пружины. Как узнать момент вращения через кватернион? Здравствуйте. Пишу симуляцию пружины при помощи ODE и Panda3D для визуализации. С простым движением всё просто: прикладывается сила пропорционально расстоянию, вычитается сила пропорционально скорости и тело плавно возвращается в заданную точку. Если пропорционально скорости не вычитывать, тело совершает гармонические колебания в окрестностях заданной точки. С вращением и моментом полное... Ни матрицы вращения, ни их производные, ни их арккосинусы и арксинусы не дают результата. В лучшем случае тело раскручивается вокруг 0Z, в худшем совершает случайные вращения и улетает в космос. Держаться заданного угла не хочет ни в какую. Самая успешная реализация вращения у меня пока учитывает вращение только по 0X и 0Y. У тела получаем квартернион и прикладываем момент пропорционально X или Y. Само собой любое отклонение вокруг оси Z влечёт раскручивание и полёт в космос. Если тело вокруг Z не вращается, тело успешно держит заданный угол при прикладывании внешних сил. Как рассчитать момент, необходимый для поворота в направлении заданном кватернионом, чтобы тело придерживалось заданного угла?
Для того чтобы рассчитать момент, необходимый для поворота в направлении, заданном кватернионом, чтобы тело придерживалось заданного угла, можно воспользоваться следующим подходом.
Получите текущий кватернион, представляющий ориентацию вашего тела.Вычислите разницу между текущим кватернионом и желаемым кватернионом (который задан вами как требуемая ориентация).Преобразуйте эту разницу в углы Эйлера или ось вращения, которую необходимо применить, чтобы перейти от текущей ориентации к желаемой ориентации.Используйте эту ось вращения и углы, чтобы расчитать момент, который необходимо приложить к телу для его поворота в требуемом направлении.
Этот подход позволит вам точно определить момент, который нужно приложить к телу, чтобы оно придерживалось заданного угла, описанного в кватернионе.
Для того чтобы рассчитать момент, необходимый для поворота в направлении, заданном кватернионом, чтобы тело придерживалось заданного угла, можно воспользоваться следующим подходом.
Получите текущий кватернион, представляющий ориентацию вашего тела.Вычислите разницу между текущим кватернионом и желаемым кватернионом (который задан вами как требуемая ориентация).Преобразуйте эту разницу в углы Эйлера или ось вращения, которую необходимо применить, чтобы перейти от текущей ориентации к желаемой ориентации.Используйте эту ось вращения и углы, чтобы расчитать момент, который необходимо приложить к телу для его поворота в требуемом направлении.Этот подход позволит вам точно определить момент, который нужно приложить к телу, чтобы оно придерживалось заданного угла, описанного в кватернионе.