Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

delaunayTriangulation

2차원 및 3차원 들로네 삼각분할(Delaunay Triangulation)

설명

점 집합에서 2차원 또는 3차원 들로네 삼각분할을 만들려면 delaunayTriangulation 객체를 사용하십시오. 2차원 데이터의 경우, 모서리 제약 조건을 지정할 수도 있습니다.

delaunayTriangulation에서 triangulation 쿼리를 비롯한 다양한 위상 쿼리와 기하학 쿼리를 수행할 수 있습니다. 예를 들어, 특정 점을 포함하는 패싯의 위치를 지정하고 볼록 껍질(Convex Hull)의 꼭짓점을 구하고 보로노이 다이어그램(Voronoi Diagram)을 계산합니다.

생성

delaunayTriangulation 객체를 만들려면 delaunayTriangulation 함수에 사용하는 입력 인수에 삼각분할 점과 제약 조건이 지정된 모서리를 정의하십시오.

설명

예제

DT = delaunayTriangulation(P)P의 점에서 들로네 삼각분할을 만듭니다. 행렬 P는 점이 2차원 공간에 존재하는지 또는 3차원 공간에 존재하는지에 따라 2개 또는 3개의 열을 갖습니다.

DT = delaunayTriangulation(P,C)P의 2차원 점에 대해 행렬 C에 모서리 제약 조건을 지정합니다. C의 각 행은 제약 조건이 지정된 모서리의 시작과 끝 꼭짓점 ID를 정의합니다. 꼭짓점 ID는 속성 DT.Points의 대응하는 꼭짓점의 행 번호입니다.

DT = delaunayTriangulation(x,y)는 열 벡터 xy의 점 좌표에서 2차원 들로네 삼각분할을 만듭니다.

DT = delaunayTriangulation(x,y,C)는 행렬 C에 모서리 제약 조건을 지정합니다.

예제

DT = delaunayTriangulation(x,y,z)는 열 벡터 x, yz의 점 좌표에서 3차원 들로네 삼각분할을 만듭니다.

DT = delaunayTriangulation()은 빈 들로네 삼각분할을 생성합니다.

입력 인수

모두 확장

점으로, 열이 삼각분할 점의 x 좌표, y 좌표 및 (가능한 경우) z 좌표인 행렬로 지정됩니다. P의 행 번호는 삼각분할의 꼭짓점 ID입니다.

삼각분할 점의 x 좌표로, 열 벡터로 지정됩니다.

삼각분할 점의 y 좌표로, 열 벡터로 지정됩니다.

삼각분할 점의 z 좌표로, 열 벡터로 지정됩니다.

제약 조건이 지정된 모서리의 꼭짓점 ID로, 2열 행렬로 지정됩니다. C의 각 행은 제약 조건이 지정된 모서리에 대응하며 두 개의 ID를 포함합니다.

  • C(j,1)은 모서리 시작 위치의 꼭짓점 ID입니다.

  • C(j,2)는 모서리 끝 위치의 꼭짓점 ID입니다.

모서리 제약 조건은 2차원 삼각분할에만 지정할 수 있습니다.

속성

모두 확장

삼각분할의 점으로, 다음 특성을 갖는 행렬로 나타냅니다.

  • DT.Points의 각 행은 꼭짓점의 좌표를 포함합니다.

  • DT.Points의 각 행 번호는 꼭짓점 ID입니다.

삼각분할 연결 목록으로, 다음 특성을 갖는 행렬로 나타냅니다.

  • DT.ConnectivityList에 있는 각 요소는 꼭짓점 ID입니다.

  • 각 행은 삼각분할에서 삼각형 또는 사면체를 나타냅니다.

  • DT.ConnectivityList의 각 행 번호는 삼각형 또는 사면체 ID입니다.

제약 조건이 지정된 모서리로, 꼭짓점 ID로 구성된 2열 행렬로 나타냅니다. DT.Constraints의 각 행은 제약 조건이 지정된 모서리에 대응하며 두 개의 ID를 포함합니다.

  • DT.Constraints(j,1)은 모서리 시작 위치의 꼭짓점 ID입니다.

  • DT.Constraints(j,2)는 모서리 끝 위치의 꼭짓점 ID입니다.

DT.Constraints는 삼각분할이 제약 조건이 지정된 모서리가 없는 경우 빈 행렬입니다.

객체 함수

convexHull들로네 삼각분할의 볼록 껍질
isInterior 들로네 삼각분할 내부의 쿼리 점
voronoiDiagram들로네 삼각분할의 보로노이 다이어그램
barycentricToCartesianConvert coordinates from barycentric to Cartesian
cartesianToBarycentricConvert coordinates from Cartesian to barycentric
circumcenterCircumcenter of triangle or tetrahedron
edgeAttachmentsTriangles or tetrahedra attached to specified edge
edgesTriangulation edges
faceNormalTriangulation unit normal vectors
featureEdgesSharp edges of surface triangulation
freeBoundaryFree boundary facets
incenterIncenter of triangulation elements
isConnectedTest if two vertices are connected by an edge
nearestNeighborVertex closest to specified point
neighborsTriangle or tetrahedron neighbors
pointLocationTriangle or tetrahedron enclosing point
sizeSize of triangulation connectivity list
vertexAttachmentsTriangles or tetrahedra attached to vertex
vertexNormalTriangulation vertex normal

예제

모두 축소

임의의 30개 점에 대한 2차원 delaunayTriangulation 객체를 만듭니다.

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.

임의의 30개 점에 대한 3차원 delaunayTriangulation 객체를 만듭니다.

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에 개발됨