2013-05-09 133 views
1

我正在尋找一些2D和3D線性幾何操作(2D線之間的交集,3D線和飛機之間的交叉點,像這樣的東西)的庫,我跑進Eigen看起來很酷,可擴展,易於包括多平臺等。子類特徵類型

我常想與X,Y,Z財產和與本徵數據類型載體約2/3D幾何,我不覺得他們:

#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

你檢查了boost.geometry?這是一個很好的幾何計算庫!如果您需要3D內容,請嘗試CGAL。 – tmaric 2013-05-09 10:56:59

+0

是啊我見過,但Eigen似乎更容易安裝在多平臺和更輕的 – nkint 2013-05-09 11:11:43

回答

1

Vector2d在本徵已經有這些方法:

const T& x(); 
T& x(); 
const T& y(); 
T& y(); 

所有存在Vector2d。由於他們返回引用,你可以用這個設定值,以及:

Eigen::Vector2d v2d; 
v2d.x() = 1; 
v2d.y() = 2; 

請參見本徵文檔here

+0

歐胡,爲什麼他們不在QTCreator方法總結諮詢? – nkint 2013-05-12 09:17:38