
But when I triangulate it I'm getting the following output
I'm using the following code:
List<TriangulationPoint> puntosContenedor = new List<TriangulationPoint>();
ConstrainedPointSet cps = null;
if (poligono is DotSpatial.Topology.Polygon)
{
DotSpatial.Topology.Polygon poly = poligono as DotSpatial.Topology.Polygon;
foreach (Coordinate c in poly.Shell.Coordinates)
puntosContenedor.Add(new TriangulationPoint(c.X, c.Y));
puntosContenedor.Add(puntosContenedor.First());
cps = new ConstrainedPointSet(puntosContenedor);
if ((poligono as DotSpatial.Topology.Polygon).NumHoles > 0)
{
foreach (ILinearRing hole in (poligono as DotSpatial.Topology.Polygon).Holes)
{
List<TriangulationPoint> holeForTri = new List<TriangulationPoint>();
foreach (Coordinate c in hole.Coordinates)
{
holeForTri.Add(new TriangulationPoint(c.X, c.Y));
}
cps.AddHole(holeForTri, "hole_" + contHoles.ToString());
contHoles++;
}
}
}
else if(poligono is DotSpatial.Topology.LinearRing)
{
foreach (Coordinate c in poligono.Coordinates)
puntosContenedor.Add(new TriangulationPoint(c.X, c.Y));
puntosContenedor.Add(puntosContenedor.First());
cps = new ConstrainedPointSet(puntosContenedor);
}
if (cps != null)
{
P2T.Triangulate(cps);
foreach (DelaunayTriangle triangulo in cps.Triangles)
{
List<Polyline3dVertex> verticesTri = new List<Polyline3dVertex>();
bool dibujar = true;
foreach (TriangulationPoint puntoTri in triangulo.Points)
{
bool isContrained = triangulo.GetConstrainedEdgeCCW(puntoTri);
if (isContrained)
dibujar = false;
verticesTri.Add(new Polyline3dVertex((float)puntoTri.X, (float)puntoTri.Y, 6000));
}
if (dibujar)
{
Polyline3d polyTri = new Polyline3d(verticesTri, true);
polyTri.Layer = new netDxf.Tables.Layer("TRIANGULACION");
polyTri.Color = AciColor.Green;
dxf.AddEntity(polyTri);
}
}
}
Thanks in advance for the help.