Example #1
0
		public void AddTriangle(DelaunayTriangle t)
		{
			this._triangles.Add(t);
		}
Example #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 = this.EdgeIndex(p1, p2);
			if (i == -1)
			{
				throw new Exception("Error marking neighbors -- t doesn't contain edge p1-p2!");
			}
			this.Neighbors[i] = t;
		}
Example #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(this.Points[0]);
			bool b = t.Contains(this.Points[1]);
			bool c = t.Contains(this.Points[2]);

			if (b && c)
			{
				this.Neighbors[0] = t;
				t.MarkNeighbor(this.Points[1], this.Points[2], this);
			}
			else if (a && c)
			{
				this.Neighbors[1] = t;
				t.MarkNeighbor(this.Points[0], this.Points[2], this);
			}
			else if (a && b)
			{
				this.Neighbors[2] = t;
				t.MarkNeighbor(this.Points[0], this.Points[1], this);
			}
			else
			{
				throw new Exception("Failed to mark neighbor, doesn't share an edge!");
			}
		}
Example #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 this.PointCWFrom(t.PointCWFrom(p));
		}
Example #5
0
		public void MarkEdge(DelaunayTriangle triangle)
		{
			for (int i = 0; i < 3; i++)
			{
				if (this.EdgeIsConstrained[i])
				{
					triangle.MarkConstrainedEdge(this.Points[(i + 1) % 3], this.Points[(i + 2) % 3]);
				}
			}
		}