2017-12-16 12 views
0

3D空間内に点の集合があります。最大誤差が10^-5であれば、それらを通る平面を置くことができます(誤差は点から面までの距離です)。3D空間内の任意の平面上の点の三角形セット

これらの点をこの任意の平面上で三角形分割する方法はありますか?私はBowyer-Watsonを試しましたが、これはエラーが0の場合にのみ動作します。その他のものは三角形化されていないか、良い三角形分割(オーバーラップする三角形)が得られません。

編集

私は私が問題を発見したと思います。特定の角度では、外心の計算がオフであるため、Bowyer Watsonアルゴリズムは機能しません。三角形の外接円を3Dで計算するにはどうすればよいですか?

答えて

0

私は平面上の点を知っているので、ベクトルを計算することができます。このベクトルは平面にあります。次に、ポイントの質量中心を計算します。私は今、私はちょうどボウヤー、ワトソンを使用することができる囲み三角形を有すること平面

 Vertex p1 = new Vertex(dir * 3000 + center); 
     Vertex p2 = new Vertex(Quaternion.AngleAxis(120, plane.normal) * dir * 3000 + center); 
     Vertex p3 = new Vertex(Quaternion.AngleAxis(240, plane.normal) * dir * 3000 + center); 

に大きな三角形を作成することができるベクターとの質量の中心を使用

。 3Dの外心の場合 私が使用します。

Vector3 ac = p3 - p1; 
    Vector3 ab = p2 - p1; 
    Vector3 abXac = Vector3.Cross(ab, ac); 

    circumceter = p1 + (Vector3.Cross(abXac, ab) * ac.sqrMagnitude + Vector3.Cross(ac, abXac) * ab.sqrMagnitude)/(2 * abXac.sqrMagnitude); 

そして今、私は3Dで任意の平面上の点の三角形分割セットを持っています。

関連する問題