Eigen::Quaternion::FromTwoVectors(a, b) * a != b
Eigen::Quaternion::FromTwoVectors(a, b) * a != b
我正在尝试获取表示从单位向量 a 到单位向量 b 的旋转的四元数。
作为完整性检查,此四元数应保证此等式 q * a = b
。本征函数 Quaterniond::FromTwoVector https://eigen.tuxfamily.org/dox/classEigen_1_1Quaternion.html doesn't seem to respect my intuition. You can check here https://godbolt.org/z/rrb3Ev9cf(对于 a = {0, 0, -1} 和 b = {-0.0082091040565241327, 0.15209511189816791, -0.89586970189502269})。
我错过了什么吗?是否存在 a 和 b 必须验证的条件?
用 R 检查:
> crossprod(c(-0.0082091040565241327, 0.15209511189816791, -0.89586970189502269))
[,1]
[1,] 0.8257828
说明你的向量 b 不是单位向量。
我正在尝试获取表示从单位向量 a 到单位向量 b 的旋转的四元数。
作为完整性检查,此四元数应保证此等式 q * a = b
。本征函数 Quaterniond::FromTwoVector https://eigen.tuxfamily.org/dox/classEigen_1_1Quaternion.html doesn't seem to respect my intuition. You can check here https://godbolt.org/z/rrb3Ev9cf(对于 a = {0, 0, -1} 和 b = {-0.0082091040565241327, 0.15209511189816791, -0.89586970189502269})。
我错过了什么吗?是否存在 a 和 b 必须验证的条件?
用 R 检查:
> crossprod(c(-0.0082091040565241327, 0.15209511189816791, -0.89586970189502269))
[,1]
[1,] 0.8257828
说明你的向量 b 不是单位向量。