2017-09-15 8 views
1

私はcgalライブラリを使って開発しています。次のコードを使用して2Dで遅延を生成しようとしました。いくつかの3D共面頂点による遅延を生成する方法CGAL

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> 
 
#include <CGAL/Constrained_Delaunay_triangulation_2.h> 
 
#include <CGAL/Delaunay_triangulation_2.h> 
 

 
#include <cassert> 
 
#include <iostream> 
 

 
typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 
 
typedef CGAL::Delaunay_triangulation_2<K> Triangulation; 
 
typedef Triangulation::Point Point; 
 

 

 
int main() 
 
{ 
 
\t std::vector<Point> PL; 
 
\t PL.push_back(Point(0, 0)); 
 
\t PL.push_back(Point(1, 0)); 
 
\t PL.push_back(Point(1, 1)); 
 
\t PL.push_back(Point(0, 1)); 
 
\t auto a = PL.begin(); 
 

 
\t Triangulation T; 
 
\t T.insert(PL.begin(),PL.end()); 
 
\t Triangulation::Finite_faces_iterator Finite_face_iterator; 
 

 
\t for (Finite_face_iterator = T.finite_faces_begin(); Finite_face_iterator != T.finite_faces_end(); ++Finite_face_iterator) 
 
\t { 
 
\t \t std::cerr << T.triangle(Finite_face_iterator) << std::endl; 
 
\t } 
 

 
\t return 0; 
 
}

両面ものコード出力、及び頂点が ポイント(0,0,0)、 ポイント(1,0,0)、 ポイント(3Dように変更します1,1,0)、 ポイント(0,1,0) これら4つの頂点は同じ平面にありますが、CGALと交差しない2つの面をどのように出力できますか?

答えて

1

この目的のためにDelaunay_triangulation_3クラスを使用できます。それは、次元2の特殊なケースとして同一平面の点を扱います。あなたのすべての点は、正確に同一平面上でなければなりません。

また、Delaunay_triangulation_2を使用することもできます。これは、ポイントを自分が属する平面に投影することです。これは、ほぼ同一平面上にある点を処理します。

+0

ありがとうございます、今すぐお試しください – wrsjhhe