コード例 #1
0
ファイル: PointSet.cs プロジェクト: yong-ja/starodyssey
 public void AddTriangle(DelaunayTriangle t)
 {
     Triangles.Add(t);
 }
コード例 #2
0
 /// <summary>
 /// Update neighbor pointers
 /// </summary>
 /// <param name="p1">Point 1 of the shared edge</param>
 /// <param name="p2">Point 2 of the shared edge</param>
 /// <param name="t">This triangle's new neighbor</param>
 private void MarkNeighbor( TriangulationPoint p1, TriangulationPoint p2, DelaunayTriangle t )
 {
     int i = EdgeIndex(p1,p2);
     if ( i==-1 ) throw new Exception( "Error marking neighbors -- t doesn't contain edge p1-p2!" );
     Neighbors[i] = t;
 }
コード例 #3
0
        /// <summary>
        /// Exhaustive search to update neighbor pointers
        /// </summary>
        public void MarkNeighbor( DelaunayTriangle t )
        {
            // Points of this triangle also belonging to t
            bool a = t.Contains(Points[0]);
            bool b = t.Contains(Points[1]);
            bool c = t.Contains(Points[2]);

            if      (b&&c) { Neighbors[0]=t; t.MarkNeighbor(Points[1],Points[2],this); }
            else if (a&&c) { Neighbors[1]=t; t.MarkNeighbor(Points[0],Points[2],this); }
            else if (a&&b) { Neighbors[2]=t; t.MarkNeighbor(Points[0],Points[1],this); }
            else throw new Exception( "Failed to mark neighbor, doesn't share an edge!");
        }
コード例 #4
0
 /// <param name="t">Opposite triangle</param>
 /// <param name="p">The point in t that isn't shared between the triangles</param>
 public TriangulationPoint OppositePoint(DelaunayTriangle t, TriangulationPoint p)
 {
     Debug.Assert(t != this, "self-pointer error");
     return PointCWFrom(t.PointCWFrom(p));
 }
コード例 #5
0
 public void MarkEdge(DelaunayTriangle triangle)
 {
     for (int i = 0; i < 3; i++) if ( EdgeIsConstrained[i] ) {
         triangle.MarkConstrainedEdge(Points[(i+1)%3], Points[(i+2)%3]);
     }
 }