Delaunay三角形分割を行った後に色にアクセスできるように、CGALのPoint_3クラスに色変数(符号なしの文字)を追加しようとしています。私が実際に達成したい何CGALのPointクラスに変数を追加する
私が試してみましたが、このような色を保存するためにTriangulation_vertex_base_with_info_3を使用している(http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Subsection_39.5.3での例を以下)
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_with_info_3<unsigned char, K> Vb;
typedef CGAL::Triangulation_data_structure_3<Vb> Tds;
typedef CGAL::Delaunay_triangulation_3<K, Tds> Triangulation;
typedef Triangulation::Point CGAL_Point;
//...
//here I make a vector of pairs of points and their color
std::vector<std::pair<CGAL_Point, unsigned char> > points;
Point currentPoint;
for (int i=0; i<roiPoints.size(); i++){
currentPoint=roiPoints[i];
points.push_back(std::make_pair(CGAL_Point(currentPoint.x, currentPoint.y, currentPoint.z), roiColors[i]));
}
//...
//triangulation
T.clear();
T.insert(points.begin(), points.end());
は、三角測量によって、頂点の色にアクセスできるようにすることです::三角測量を行った後の四面体クラス。
私は(x、y、z)に点Pがあるとしましょう。三角形分割の後、私はこの点Pを含む四面体tを見つけ、この四面体の頂点にアクセスすることができます(t.vertex(0..3)を使用)。これは、Point_3型の頂点を返し、以前に保存した色にはアクセスできません。
これを行う方法は、色情報を含む独自のPointクラスを作成することです。簡単ですが、Point_3の代わりにこのクラスを使用する方法を理解していません。私はこれを行うための自分のカーネルと、http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Kernel_23/Chapter_main.html#Section_11.5の例を書かなければならないが、カーネルをベースクラスとして使うべきか、私のカーネルはどんな機能を含むべきかを理解できない。
は私もstackoverflowの時にここに2つの類似のトピックを見つけました: Customizing CGAL Kernel with my own Point class と CGAL: Inheritance and the kernel しかし、彼らは私を助けていませんでした。ありがとうございました!
頂点の色を設定するためにリンクした例を使用しましたが(私が付けたコードを参照してください)、私はTetrahedronを通して色にアクセスできませんでした。どうすればより具体的にできますか?ありがとうございました! – ppalasek
私はそれを理解しました! Cell_iterator ci = T.locate(CGAL_Point(x、y、z));今度は、ci-> vertex(index) - > info()を使って色にアクセスできます(index = 0..3)。私はcell_iteratorから頂点にアクセスできるかどうかわかりませんでした。ありがとうございました! – ppalasek