94 lines
3.3 KiB
C#
94 lines
3.3 KiB
C#
// -----------------------------------------------------------------------
|
|
// <copyright file="IPolygon.cs" company="">
|
|
// Triangle.NET code by Christian Woltering, http://triangle.codeplex.com/
|
|
// </copyright>
|
|
// -----------------------------------------------------------------------
|
|
|
|
namespace TriangleNet.Geometry
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
/// <summary>
|
|
/// Polygon interface.
|
|
/// </summary>
|
|
public interface IPolygon
|
|
{
|
|
/// <summary>
|
|
/// Gets the vertices of the polygon.
|
|
/// </summary>
|
|
List<Vertex> Points { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the segments of the polygon.
|
|
/// </summary>
|
|
List<ISegment> Segments { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a list of points defining the holes of the polygon.
|
|
/// </summary>
|
|
List<Point> Holes { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a list of pointers defining the regions of the polygon.
|
|
/// </summary>
|
|
List<RegionPointer> Regions { get; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the vertices have marks or not.
|
|
/// </summary>
|
|
bool HasPointMarkers { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the segments have marks or not.
|
|
/// </summary>
|
|
bool HasSegmentMarkers { get; set; }
|
|
|
|
[Obsolete("Use polygon.Add(contour) method instead.")]
|
|
void AddContour(IEnumerable<Vertex> points, int marker, bool hole, bool convex);
|
|
|
|
[Obsolete("Use polygon.Add(contour) method instead.")]
|
|
void AddContour(IEnumerable<Vertex> points, int marker, Point hole);
|
|
|
|
/// <summary>
|
|
/// Compute the bounds of the polygon.
|
|
/// </summary>
|
|
/// <returns>Rectangle defining an axis-aligned bounding box.</returns>
|
|
Rectangle Bounds();
|
|
|
|
/// <summary>
|
|
/// Add a vertex to the polygon.
|
|
/// </summary>
|
|
/// <param name="vertex">The vertex to insert.</param>
|
|
void Add(Vertex vertex);
|
|
|
|
/// <summary>
|
|
/// Add a segment to the polygon.
|
|
/// </summary>
|
|
/// <param name="segment">The segment to insert.</param>
|
|
/// <param name="insert">If true, both endpoints will be added to the points list.</param>
|
|
void Add(ISegment segment, bool insert = false);
|
|
|
|
/// <summary>
|
|
/// Add a segment to the polygon.
|
|
/// </summary>
|
|
/// <param name="segment">The segment to insert.</param>
|
|
/// <param name="index">The index of the segment endpoint to add to the points list (must be 0 or 1).</param>
|
|
void Add(ISegment segment, int index);
|
|
|
|
/// <summary>
|
|
/// Add a contour to the polygon.
|
|
/// </summary>
|
|
/// <param name="contour">The contour to insert.</param>
|
|
/// <param name="hole">Treat contour as a hole.</param>
|
|
void Add(Contour contour, bool hole = false);
|
|
|
|
/// <summary>
|
|
/// Add a contour to the polygon.
|
|
/// </summary>
|
|
/// <param name="contour">The contour to insert.</param>
|
|
/// <param name="hole">Point inside the contour, making it a hole.</param>
|
|
void Add(Contour contour, Point hole);
|
|
}
|
|
}
|