gpt4 book ai didi

matrix - Transform::linear() 在 Eigen 库中返回什么?

转载 作者:行者123 更新时间:2023-12-01 11:28:15 25 4
gpt4 key购买 nike

Eigen C++ 库,我无法理解 Transform::linear()功能。根据文档,它返回 the linear part of the transformation .但是,这是什么意思?确定所有矩阵变换都是线性的吗?

此外,从其他地方看到的一些例子来看,它返回的值似乎是Eigen::Matrix3d (或可以隐式转换为此)。对我来说,这表明它可能只返回变换的旋转部分,即长度为 3(x、y 和 z)。然而,还有一个Transform::rotation()函数,根据文档返回 the rotation part of the transformation .

有人可以向我解释一下 Transform::linear()实际上返回?

最佳答案

遇到同样的问题,我想补充以下信息:

正如@ggael 所解释的,Transform::linear()直接返回变换矩阵中的线性部分。
Transform::rotation()返回线性部分中的旋转分量。但由于线性部分包含 not only rotation but also reflection, shear and scaling ,提取旋转不是直截了当的,需要使用奇异值分解 (SVD) 进行计算。

的常见情况下已知仿射矩阵仅包含旋转和平移 然后 Transform::linear()可用于有效访问旋转部分。

最后,如果你设置了 TransformMode模板参数到 Isometry , Eigen 将仅假设旋转和平移,并优化逆变换的计算。最新版本的Eigen也会优化Transform::rotation()在这种情况下,直接返回线性部分。但是请注意,没有紧凑版本的等距仿射矩阵,其中最后一行未存储并假定为 [0 ... 0 1]。

关于matrix - Transform::linear() 在 Eigen 库中返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35416880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com