103 lines
2.7 KiB
C#
103 lines
2.7 KiB
C#
|
// -----------------------------------------------------------------------
|
||
|
// <copyright file="HalfEdge.cs">
|
||
|
// Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/
|
||
|
// </copyright>
|
||
|
// -----------------------------------------------------------------------
|
||
|
|
||
|
namespace UnityEngine.U2D.Animation.TriangleNet
|
||
|
.Topology.DCEL
|
||
|
{
|
||
|
internal class HalfEdge
|
||
|
{
|
||
|
internal int id;
|
||
|
internal int mark;
|
||
|
|
||
|
internal Vertex origin;
|
||
|
internal Face face;
|
||
|
internal HalfEdge twin;
|
||
|
internal HalfEdge next;
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the half-edge id.
|
||
|
/// </summary>
|
||
|
public int ID
|
||
|
{
|
||
|
get { return id; }
|
||
|
set { id = value; }
|
||
|
}
|
||
|
|
||
|
public int Boundary
|
||
|
{
|
||
|
get { return mark; }
|
||
|
set { mark = value; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the origin of the half-edge.
|
||
|
/// </summary>
|
||
|
public Vertex Origin
|
||
|
{
|
||
|
get { return origin; }
|
||
|
set { origin = value; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the face connected to the half-edge.
|
||
|
/// </summary>
|
||
|
public Face Face
|
||
|
{
|
||
|
get { return face; }
|
||
|
set { face = value; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the twin of the half-edge.
|
||
|
/// </summary>
|
||
|
public HalfEdge Twin
|
||
|
{
|
||
|
get { return twin; }
|
||
|
set { twin = value; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Gets or sets the next pointer of the half-edge.
|
||
|
/// </summary>
|
||
|
public HalfEdge Next
|
||
|
{
|
||
|
get { return next; }
|
||
|
set { next = value; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Initializes a new instance of the <see cref="HalfEdge" /> class.
|
||
|
/// </summary>
|
||
|
/// <param name="origin">The origin of this half-edge.</param>
|
||
|
public HalfEdge(Vertex origin)
|
||
|
{
|
||
|
this.origin = origin;
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Initializes a new instance of the <see cref="HalfEdge" /> class.
|
||
|
/// </summary>
|
||
|
/// <param name="origin">The origin of this half-edge.</param>
|
||
|
/// <param name="face">The face connected to this half-edge.</param>
|
||
|
public HalfEdge(Vertex origin, Face face)
|
||
|
{
|
||
|
this.origin = origin;
|
||
|
this.face = face;
|
||
|
|
||
|
// IMPORTANT: do not remove the (face.edge == null) check!
|
||
|
if (face != null && face.edge == null)
|
||
|
{
|
||
|
face.edge = this;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public override string ToString()
|
||
|
{
|
||
|
return string.Format("HE-ID {0} (Origin = VID-{1})", id, origin.id);
|
||
|
}
|
||
|
}
|
||
|
}
|