exponenta event banner

delaunayTriangulation

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

Описание

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

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

Создание

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

Описание

пример

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

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

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

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

пример

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

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

Входные аргументы

развернуть все

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

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

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

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

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

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

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

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

Свойства

развернуть все

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

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

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

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

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

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

  • Каждый номер строки DT.ConnectivityList представляет собой идентификатор треугольника или тетраэдра.

Ребра с зависимостями, представленные в виде 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