다각형 영역의 근사 중앙 축(Medial Axis) 계산하기
제약 조건이 적용되는 들로네 삼각분할을 사용하여 다각형 영역의 근사 중앙 축(Medial Axis)을 만듭니다. 다각형의 중앙 축은 다각형 내부에 있는 최대 원반의 중심의 궤적으로 정의됩니다.
영역 경계에 있는 샘플 점에 대해 제약 조건이 적용되는 들로네 삼각분할을 생성합니다.
load trimesh2d
dt = delaunayTriangulation(x,y,Constraints);
inside = isInterior(dt);영역 삼각형을 나타내는 삼각분할을 생성합니다.
tr = triangulation(dt(inside,:),dt.Points);
인접한 삼각형의 외심을 잇는 모서리 집합을 생성합니다. 추가 로직으로 이러한 모서리의 고유한 집합을 생성합니다.
numt = size(tr,1); T = (1:numt)'; neigh = neighbors(tr); cc = circumcenter(tr); xcc = cc(:,1); ycc = cc(:,2); idx1 = T < neigh(:,1); idx2 = T < neigh(:,2); idx3 = T < neigh(:,3); neigh = [T(idx1) neigh(idx1,1); T(idx2) neigh(idx2,2); T(idx3) neigh(idx3,3)]';
영역 삼각형은 녹색으로, 영역 경계는 파란색으로, 중앙 축은 빨간색으로 플로팅합니다.
clf triplot(tr,"g") hold on plot(xcc(neigh),ycc(neigh),"-r",LineWidth=1.5) axis([-10 310 -10 310]) axis equal plot(x(Constraints'),y(Constraints'),"-b",LineWidth=1.5) xlabel("Medial Axis of Polygonal Domain",FontWeight="b") hold off
