Tag: 四元数

四元数平滑旋转

四元数不仅可以描述旋转,还可以描述方向,即从初始(零)位置旋转。 我希望模拟从一个方向到另一个方向的平滑旋转。 我计算了起始方向startOrientation和end orientation endOrientation并且希望将中间方向描述为startOrientation*(1-argument) + endOrientation*argument而argument从0变为1 。 猴子引擎更新function的代码如下: @Override public void simpleUpdate(float tpf) { if( endOrientation != null ) { if( !started ) { started = true; } else { fraction += tpf * speed; argument = (float) ((1 – Math.cos(fraction * Math.PI)) / 2); orientation = startOrientation.mult(1-argument).add(endOrientation.mult(argument)); //orientation = startOrientation.mult(1-fraction).add(endOrientation.mult(fraction)); log.debug(“tpf = {}, […]

为什么我的四元数不能正常旋转?

好吧,我们不是在讨论OpenGL这个问题,但是这将与OpenGL ES 2.0一起使用。 问题:如何使用以下代码创建和旋转四元数? 我一直在阅读和研究这个问题,但仍然无法完全理解这些概念。 我以为我明白了,但是一旦我开始进行一些计算来旋转四元数,我意识到我甚至无法回到我开始的地方。 所以我们假设我们有一个立方体,它的中心位于(0,0,0)。 我们想在x轴上旋转45度。 我该怎么办? (只有四元数) 假设成功,你如何从’W’获得轮换量? 我知道’1’表示没有旋转,但如果它旋转了173度怎么办? 试图旋转到给定的方向,45度,然后从W获得该值。我觉得我需要将角度转换为rads或其他东西,但不完全确定。 在线教程因人而异。 这是我的代码: import java.util.Scanner; import Quaternion; public class Main { public static void main(String[] args) { Quaternion q1 = new Quaternion(0, 0, 0, 1); Quaternion q2 = new Quaternion(0, 0, 0, (float) Math.cos(toRAD(45.0f) / 2)); q1 = q2.mul(q1); System.out.println(“q1: ” + q1.getX() […]

在1轴上旋转四元数?

我有一个由四元数旋转的模型。 我只能设置旋转,我不能添加或减去任何东西。 我需要获取轴的值,然后为它添加一个角度(可能是度数或弧度?),然后再重新添加修改后的四元数。 我怎样才能做到这一点? (在每个轴上回答)。

这个四元数旋转代码如何工作?

我试图理解四元数旋转是如何工作的,我找到了这个迷你教程http://www.julapy.com/blog/2008/12/22/quaternion-rotation/但他做了一些假设,我无法锻炼,就像我怎样才能“ 围绕每个轴计算旋转矢量,只需绕轴旋转矢量。 ”他如何计算angleDegreesX,angleDegreesY和angleDegreesZ? 有人可以提供一个工作实例或解释吗?

在JavaFX中正确旋转3轴上的3D对象

所以到目前为止我用来在JavaFX中旋转对象的方法是我将它分成3组,每组都附加一个Rotate并锁定到单个轴,如下所示: Rotate heading, roll, pitch; Group normalrotate, rollrotate, verticalrotate; heading.setAxis(new Point3D(0,1,0)); normalrotate.getTransforms().add(heading); roll.setAxis(new Point3D(0,0,1)); rollrotate.getTransforms().add(roll); pitch.setAxis(new Point3D(1,0,0)); verticalrotate.getTransforms().add(pitch); 并且每次我需要旋转对象时都会执行setAngle()。 这对于前进和滚动非常有效,直到我决定我也需要投球。 现在很多OpenGL等教程都说旋转的matix或四元数最适合这种类型的旋转,但javadoc缺乏任何有用的数据。 示例:当我在y轴上旋转对象180度时会发生什么(实际上应该以透明蓝色旋转) 我错过了什么吗? 所有帮助将不胜感激。