Eigen::Vector3f 取前两位
时间: 2023-07-06 17:26:06 浏览: 46
可以使用 `.head<2>()` 方法来取 `Eigen::Vector3f` 的前两个元素,返回类型是 `Eigen::Matrix<float, 2, 1>`。例如:
```cpp
Eigen::Vector3f vec(1.0f, 2.0f, 3.0f);
Eigen::Matrix<float, 2, 1> vec2 = vec.head<2>();
```
其中,`vec2` 就是 `vec` 的前两个元素构成的二维向量。
相关问题
Eigen::Vector3f 取最后一位
可以使用 `.tail<1>()` 方法来取 `Eigen::Vector3f` 的最后一个元素,返回类型是 `Eigen::Matrix<float, 1, 1>`。例如:
```cpp
Eigen::Vector3f vec(1.0f, 2.0f, 3.0f);
Eigen::Matrix<float, 1, 1> vec2 = vec.tail<1>();
```
其中,`vec2` 就是 `vec` 的最后一个元素构成的一维向量。
Eigen::Vector3f 转Eigen::VectorXd
将Eigen::Vector3f转换为Eigen::VectorXd,可以使用VectorXd的构造函数,例如:
```
Eigen::Vector3f vec3f(1.0f, 2.0f, 3.0f);
Eigen::VectorXd vecXd(vec3f.size());
vecXd << vec3f(0), vec3f(1), vec3f(2);
```
也可以使用cast()方法将Vector3f转换为Vector3d,然后使用VectorXd的构造函数将其转换为VectorXd,例如:
```
Eigen::Vector3f vec3f(1.0f, 2.0f, 3.0f);
Eigen::Vector3d vec3d = vec3f.cast<double>();
Eigen::VectorXd vecXd(vec3d.size());
vecXd << vec3d(0), vec3d(1), vec3d(2);
```
注意,这里的VectorXd需要指定大小,大小应该与Vector3d相同。