Triangle.NET не триангулирет область с отверстием

377
12 февраля 2020, 20:50

При триангуляции поверхности с данными координатами дырки Triangle.Net некоректно триангулирует область.

Мой код:

 Polygon poly = new Polygon();
        routingContext.Polygon.ForEach(p => poly.Add(new Vertex(p.X, p.Y)));

        //Holes
        for (int i = 0; i < routingContext.Holes.Count; i++)
        {
            List<Vertex> vertices = new List<Vertex>();
            routingContext.Holes[i].ForEach(p => vertices.Add(new Vertex(p.X,p.Y)));
            poly.Add(new Contour(vertices), true);
        }
        var mesh = poly.Triangulate();

RoutingContext:

public class RoutingContext
{
    public RoutingContext()
    {
        Holes = new List<List<Point>>();
        Polygon = new List<Point>();
    }
    public RoutingContext(List<List<Point>> holes, List<Point> polygon)
    {
        Holes = holes;
        Polygon = polygon;
    }
    public List<List<Point>> Holes { get; set; }
    public List<Point> Polygon { get; set; }
    public int PolygonSize => Polygon.Count;
}

Для рандомного набора точек без отверствия результат: При добавлениии отверствия в область:

READ ALSO
Неправильно работают рикошеты

Неправильно работают рикошеты

Rigidbody2D стоит и у Bullet, и у StoneКоллайдеры тоже

448
Поиск кириллицы в MySQL (Eloquent)

Поиск кириллицы в MySQL (Eloquent)

Кириллица в базе данных хранится таким образом (пример): {"ru":"\u0418\u0441\u0442\u0440\u0430"}

378
Триггер, для ограничение ввода данных. SQL

Триггер, для ограничение ввода данных. SQL

не могу вообще понять как сделать данное условие

327
Сохранить объект в файл с возможностью дальнейшего подключения

Сохранить объект в файл с возможностью дальнейшего подключения

Есть объекты, которые строятся в одной системеОни могут быть как большими, так и маленькими, очень вложенными и не очень

410