delaunayTriangulation

Триангуляция Делоне в 2-D и 3-D

Описание

Используйте delaunayTriangulation объект для создания 2-D или 3-D триангуляции Делоне из набора точек. Для 2D данных можно также задать ограничения по ребрам.

Можно выполнять различные топологические и геометрические запросы на delaunayTriangulation, включая любые triangulation запрос. Например, найдите грань, содержащую определенную точку, найдите вершины выпуклой оболочки или вычислите Диаграмму Вороного.

Создание

Как создать delaunayTriangulation объект, использовать delaunayTriangulation функция с входными параметрами, которые задают точки триангуляции и ограниченные ребра.

Описание

пример

DT = delaunayTriangulation(P) создает триангуляцию Делоне из точек в P. Матрица P имеет 2 или 3 столбца, в зависимости от того, находятся ли ваши точки в 2-D или трехмерном пространстве.

DT = delaunayTriangulation(P,C) задает ограничения на ребра в матрице C для 2-D точек в P. Каждая строка C задает начала и концы вершин ограниченного ребра. Идентификаторы вершин являются номерами строк соответствующих вершин в свойстве DT.Points.

DT = delaunayTriangulation(x,y) создает 2-D триангуляцию Делоне из координат точек в векторах-столбцах x и y.

DT = delaunayTriangulation(x,y,C) задает ограничения на ребра в матрице C.

пример

DT = delaunayTriangulation(x,y,z) создает 3-D триангуляцию Делоне из координат точек в векторах-столбцах x, y, и z.

DT = delaunayTriangulation() создает пустую триангуляцию Делоне.

Входные параметры

расширить все

Точки, заданные как матрица, столбцы которой являются x -cordinates, y -cordinates и (возможно) z-координаты точек триангуляции. Номера строк P являются идентификаторами вершин в триангуляции.

x -координаты точек триангуляции, заданные как вектор-столбец.

y -координаты точек триангуляции, заданные как вектор-столбец.

z -координаты точек триангуляции, заданные как вектор-столбец.

Идентификаторы вершин ограниченных ребер, заданные как матрица с 2 столбцами. Каждая строка C соответствует ограниченному ребру и содержит два идентификатора:

  • C(j,1) - идентификатор вершины в начале ребра.

  • C(j,2) - идентификатор вершины в конце ребра.

Ограничения по ребрам можно задать только для 2-D триангуляций.

Свойства

расширить все

Точки в триангуляции, представленные как матрица со следующими характеристиками:

  • Каждая строка в DT.Points содержит координаты вершины.

  • Количество строк DT.Points - идентификатор вершины.

Список связности триангуляции, представленный как матрица со следующими характеристиками:

  • Каждый элемент в DT.ConnectivityList - идентификатор вершины.

  • Каждая строка представляет треугольник или тетраэдр в триангуляции.

  • Количество строк DT.ConnectivityList является треугольником или tetrahedron ID.

Ограниченные ребра, представленные как 2-столбцевая матрица с идентификаторами вершин. Каждая строка DT.Constraints соответствует ограниченному ребру и содержит два идентификатора:

  • DT.Constraints(j,1) - идентификатор вершины в начале ребра.

  • DT.Constraints(j,2) - идентификатор вершины в конце ребра.

DT.Constraints является пустой матрицей, если триангуляция не имеет ограниченных ребер.

Функции объекта

convexHullВыпуклая оболочка триангуляции Делоне
isInterior Точки запроса в триангуляции Делоне
voronoiDiagramДиаграмма Вороного триангуляции Делоне
barycentricToCartesianПреобразуйте координаты из барицентрических в Декартовы
cartesianToBarycentricПреобразуйте координаты из Декартовых в барицентрические
circumcenterЦентр описанной окружности треугольника или тетраэдра
edgeAttachmentsТреугольники или тетраэдров, присоединенные к заданному ребру
edgesТриангуляция ребер
faceNormalНормальные векторы модуля триангуляции
featureEdgesОстрые края триангуляции поверхности
freeBoundaryСвободные краевые грани
incenterЦентр вписанной окружности элементов триангуляции
isConnectedПроверьте, связаны ли две вершины ребром
nearestNeighborВершина, ближайшая к заданной точке
neighborsСоседи треугольника или тетраэдра
pointLocationТреугольник или тетраэдр, охватывающий точку
sizeРазмер списка связности триангуляции
vertexAttachmentsТреугольники или тетраэдров, присоединенные к вершине
vertexNormalНормаль вершины триангуляции

Примеры

свернуть все

Создайте 2-D delaunayTriangulation объект для 30 случайных точек.

rng default;
P = rand([30 2]);
DT = delaunayTriangulation(P)
DT = 
  delaunayTriangulation with properties:

              Points: [30x2 double]
    ConnectivityList: [48x3 double]
         Constraints: []

Вычислите центральные точки каждого треугольника и постройте график триангуляции с центральными точками.

IC = incenter(DT);
triplot(DT)
hold on
plot(IC(:,1),IC(:,2),'*r')

Figure contains an axes. The axes contains 2 objects of type line.

Создайте 3-D delaunayTriangulation объект для 30 случайных точек.

rng default;
x = rand([30 1]);
y = rand([30 1]);
z = rand([30 1]);
DT = delaunayTriangulation(x,y,z)
DT = 
  delaunayTriangulation with properties:

              Points: [30x3 double]
    ConnectivityList: [102x4 double]
         Constraints: []

Постройте график триангуляции.

tetramesh(DT,'FaceAlpha',0.3);

Figure contains an axes. The axes contains 102 objects of type patch.

Вычислите и постройте график выпуклой оболочки триангуляции.

[K,v] = convexHull(DT);
trisurf(K,DT.Points(:,1),DT.Points(:,2),DT.Points(:,3))

Figure contains an axes. The axes contains an object of type patch.

Подробнее о

расширить все

Совет

  • delaunayTriangulation может привести к неправильным или несогласованным результатам, когда граничные ограничения пересекаются или перекрываются. Чтобы избежать такого поведения, используйте ограничения, образующие одну или несколько закрытые контуры, которые не пересекаются или не перекрываются.

Введенный в R2013a