相对计算四元数

Calculate Quaternions relatively

问题如下图解释。 现在 我有 Q1、Q2 和 Q3 的四元数数据。我如何计算 Q4? 在此先感谢您的帮助。

enter image description here

为了更清楚:

我想开发一个 3D 室内导航应用程序,允许用户上传路线并在同一位置重现路线。

创建路径并上传时: 首先,用户打开相机,得到初始位置为O,然后将X的平移和旋转数据存储起来,这是一个预定义的位置。最后通过记录另一个点来创建他们的路径,比如 Y 相对于 O。

在再现用户之前创建的路径时,他们再次打开相机并获得另一个初始位置O'。他可以再次到达预定义的位置并再次获得 X 的平移和旋转。然后我可以计算相对于 O' 的 Y 并重现该点。

在我看来,我可以通过矢量计算来计算平移:O'X - OX + OY = O'Y

但是我对四元数和旋转部分不熟悉。我试过同样的方法,但结果不正确。所以我将问题简化为图中描述的模型并寻求帮助。

我觉得Quaternion.SetLookRotation适合你的问题,它将前向向量(和向上向量)转换为四元数,而人们的向上向量通常是Vector3.up,所以:

var Q4 = Quaternion.SetLookRotation(/* vector Y-O' here */);