Я использую NetTopologySuite версии 1.14 и играю с ним, чтобы вычислить Триангуляцию набора точек. Более конкретно:
Я хочу 3D Триангуляция Делоне набора точек в трехмерном пространстве, которое также закрыто (конечная сетка должна быть закрыта: оболочка ).
Моя попытка
Следуя API, который я связал, я написал эту простую программу:
var builder = new NTS.Triangulate.ConformingDelaunayTriangulationBuilder();
builder.SetSites(new NTS.Geometries.MultiPoint(new[] { // A (square) pyramid
new NTS.Geometries.Point(0, 0, 0),
new NTS.Geometries.Point(2, 0, 0),
new NTS.Geometries.Point(0, 2, 0),
new NTS.Geometries.Point(2, 2, 0),
new NTS.Geometries.Point(1, 1, 2)
}));
var triangles = builder.GetTriangles(new NTS.Geometries.GeometryFactory());
Console.WriteLine("Triangles: " + triangles.ToString());
Что возвращает:
(0 2 0, 0 0 0, 1 1 2, 0 2 0),
(0 2 0, 1 1 2, 2 2 0, 0 2 0),
(2 2 0, 1 1 2, 2 0 0, 2 2 0),
(0 0 0, 2 0 0, 1 1 2, 0 0 0)
Открытая сетка
Это правильно, но оно породило только 4 грани (треугольника). Я ожидал 6 треугольников (основание пирамиды должно было быть добавлено путем добавления 2 треугольников). Я получаю открытую сетку в принципе. Я ожидал эти 2 дополнительных треугольника:
(0 0 0, 2 0 0, 0 2 0, 0 0 0),
(0 2 0, 2 0 0, 2 2 0, 0 2 0)
Как получить замкнутую сетку при генерации триангуляции?