我正在寻找一些用于2D和3D线性几何操作的库(2D线之间的交叉,3D线和平面之间的交叉,类似的东西),我遇到了Eigen看起来很酷很快,可扩展,易于包含,多平台等。
我习惯于考虑具有x,y,z属性的矢量中的2 / 3D几何,并且使用Eigen数据类型我找不到它们:
#include "Eigen/Core"
...
Eigen::Vector2d p1;
double x = p1[0];
double y = p1[1];
为了个人方便,我想继承Vector2d,添加一些舒适的方法,如
Vec2D::x() { return this[0]; }
Vec2D::set(double x, double y) { this[0]=x; this[1]=y; }
....
或类似的方法。我不是一个有c ++经验的程序员,所以我问这是否正确,以及如何处理模板..
答案 0 :(得分:1)
Vector2d
已经有了这些方法:
const T& x();
T& x();
const T& y();
T& y();
Vector2d
全部存在。由于它们返回引用,您也可以使用它来设置值:
Eigen::Vector2d v2d;
v2d.x() = 1;
v2d.y() = 2;
参见Eigen文档here。