我已经开始使用CGAL,遇到了我无法解决的问题。我将模型加载为三角形列表,并希望存储每个三角形的其他信息-颜色。我也想使用CGAL的AABB树,但是我注意到我基本上有两个选择:
class DataTriangle {
public:
Point_3 x;
Point_3 y;
Point_3 z;
int color;
}
我可以制作自己的三角形,并将Triangle_3包括在内:
class MyTriangle {
Triangle mTriangleCgal;
int color;
const Triangle& getTri() const { return mTriangleCgal; }
}
然后再次声明My_triangle_primitive仿函数,定义
typedef K::Point_3 Point;
typedef K::Triangle_3 Datum;
typedef const K::Triangle_3& Datum_reference;
并引用下面的三角形。
Datum_reference datum() { return tri->getTri(); }
此解决方案可以吗?我觉得它不应该通过构造任何新对象来浪费时间。我说的对吗?
我想到的第三个想法是简单地创建一个自定义迭代器,该迭代器将通过MyTriangles的向量,而不是类本身,而是返回Triangle_3类。我应该能够将此迭代器传递到AABB树构造函数中,并从纯Triangle_3对象构造树,该树应该可以正常工作。
我是否错过了另一种方法,而不是这三种方法?如果没有其他方法,可以使用2号吗?
谢谢