相对计算四元数
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 */);
问题如下图解释。 现在 我有 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 */);