c# - 找到两个四元数之间的旋转差来校准两个坐标系

标签 c# math quaternions

我需要将流式四元数数据偏移特定量。为此,我计划获取两者之间的差异,然后用第二个抵消第一个。

我很难找到两者之间的区别。

Using this converter .

我正在运行此代码:

public void convertQuat180()
{
    Quaternion q = new Quaternion(0.65328f, 0.2706f, 0.65328f, -0.2706f); //45,180,0

    Quaternion q180 = new Quaternion(0.70711f, 0, 0.70711f, 0);  // 0,90,0

    Quaternion result = q180 * Quaternion.Inverse(q);

    Console.WriteLine(result);
}

我希望结果是:

(euler) diff = 45, 90 , 0

但我得到的是:

135,-180,0

我哪里出错了?

最佳答案

您想要的是坐标系的转换。您可以通过传感器 RS 测量旋转,并通过相机 RC 测量旋转。两者通过一个常量(我们称之为)偏移量 RO 相关:

RS = RC * RO

或者另一种选择

RC = RS * RO^-1

在校准过程中,您将获得RSRC。然后,您可以计算偏移量:

RO = RC^-1 * RS
RO^-1 = RS^-1 * RC

只需计算您将更频繁使用的那个(可能是 RO^-1 因为您想从传感器旋转获取相机旋转)。

关于c# - 找到两个四元数之间的旋转差来校准两个坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39192856/

相关文章:

flash - 求弧度反射角

javascript - Ease Out Cubic - 函数参数说明

C# 如何将四元数转换为欧拉角 (XYZ)

c# - 成员变量的下划线前缀。智能感知

java - 如何从一组数字中计算平均值、中位数、众数和范围

c# - 当编译时类型未知时使用泛型

c - C中四元数到欧拉角以及欧拉角到四元数

quaternions - 计算四元数逆

c# - DbContext 只是我的数据库在内存中的架构或架构和记录

c# - 动态 Lambda 表达式调用