Math 从四元数数据重新校准基于位置

Math 从四元数数据重新校准基于位置,math,quaternions,Math,Quaternions,我从我的控制器中得到一个四元数,并在此基础上在我的程序中设置模型的旋转。 如果我想重新校准控制器的基点,我可以将当前传感器值捕获为baseValue,并使用以下命令将模型设置为基准位置: modelRotation = sensorData * inverseOf(baseValue); 这工作得非常好,模型被重置到基准位置 问题是,如果我在Y轴上旋转控制器并重新校准,现在控制器x轴上的旋转行为与模型z轴上的旋转行为相同 有没有办法让模型始终模拟控制器旋转?解决方案: modelRotatio

我从我的控制器中得到一个四元数,并在此基础上在我的程序中设置模型的旋转。 如果我想重新校准控制器的基点,我可以将当前传感器值捕获为baseValue,并使用以下命令将模型设置为基准位置:

modelRotation = sensorData * inverseOf(baseValue);
这工作得非常好,模型被重置到基准位置

问题是,如果我在Y轴上旋转控制器并重新校准,现在控制器x轴上的旋转行为与模型z轴上的旋转行为相同

有没有办法让模型始终模拟控制器旋转?

解决方案:

modelRotation = inverseOf(baseValue) * sensorData;
为什么?

我不确定为什么这是我问题的解决方案,但我了解到这是数学堆栈交换的一个可能解决方案:

我试过了,效果很好。

解决方案:

modelRotation = inverseOf(baseValue) * sensorData;
为什么?

我不确定为什么这是我问题的解决方案,但我了解到这是数学堆栈交换的一个可能解决方案:

我试过了,它成功了