Main Content

다중 패싯 패치

예제 — 정육면체 정의하기

정육면체는 6개의 면을 형성하는 8개의 꼭짓점으로 정의됩니다. 다음 그림은 각각 1 단위 길이를 갖는 면으로 구성되는 정육면체를 정의하는 꼭짓점의 x, y, z 좌표를 보여줍니다.

x, y, z 좌표 인수를 벡터로 지정하면 이들 인수는 점이 순서대로 연결된 단일 다각형을 형성합니다. 인수가 행렬인 경우 MATLAB®은 열마다 한 개의 다각형을 그려 여러 개의 면을 가진 단일 패치를 생성합니다. 이런 면들은 꼭 연결되지 않아도 되며 자기교차가 가능합니다.

또는, 각 고유 꼭짓점의 좌표 그리고 면을 형성하기 위해 이들 꼭짓점을 연결하는 순서를 지정할 수 있습니다. 이 섹션의 예제에서는 두 가지 기법을 모두 보여줍니다.

X, Y, Z 좌표 지정하기

6개의 면에는 각각 꼭짓점이 4개씩 있습니다. 각각의 다각형을 닫을 필요가 없으므로(즉, 첫 번째 꼭짓점과 마지막 꼭짓점이 같을 필요가 없음), ×, y, z 좌표 각각에 대해 4×6 행렬을 사용하여 이 정육면체를 정의할 수 있습니다.

행렬의 각 열은 제각기 다른 면을 지정합니다. 꼭짓점은 8개밖에 없지만, 6개의 면을 모두 정의하려면 24개의 꼭짓점을 지정해야 합니다. 각 면은 4개의 다른 면과 꼭짓점을 공유하므로, 각 꼭짓점을 한 번만 정의한 다음 각 면을 형성하기 위해 이들 꼭짓점을 연결하는 순서를 지정하는 방법으로 패치를 더욱 효율적으로 정의할 수 있습니다. 패치의 Vertices 속성과 Faces 속성은 이런 식으로만 패치를 정의합니다.

면과 꼭짓점 지정하기

다음 행렬은 VerticesFaces를 사용하여 정육면체를 지정합니다.

패치에 많은 수의 면이 포함된 경우 꼭짓점/면 기법을 사용하면 상당한 양의 컴퓨터 메모리를 절약할 수 있습니다. 이 기법에서는 Vertices 속성과 Faces 속성에 대한 값을 명시적으로 할당해야 하는 정식 patch 함수 구문이 필요합니다. 예를 들면 다음과 같습니다.

patch('Vertices',vertex_matrix,'Faces',faces_matrix)

하이 레벨 구문은 면 색이나 가장자리 색을 자동으로 할당하지 않으므로, 디폴트 값인 흰색 면 색과 검은색 가장자리 색 이외의 색을 가진 패치를 생성하려면 그에 맞는 적합한 속성을 설정해야 합니다.

단순 면 채색

단순 면 채색은 각 면에 한 가지 색을 지정한 결과입니다. 예를 들어, 꼭짓점/면 기법과 FaceVertexCData 속성을 사용하여 색을 정의할 때 다음 명령문은 각 면에 한 가지 색을 지정하고 FaceColor 속성을 flat으로 설정합니다.

vert = [0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1];
fac = [1 2 6 5;2 3 7 6;3 4 8 7;4 1 5 8;1 2 3 4;5 6 7 8];
patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',hsv(6),'FaceColor','flat')

다음과 같이 좌표축을 조정합니다.

view(3)
axis vis3d

FaceVertexCData 속성으로 지정된 트루컬러의 형식이 MATLAB 컬러맵(즉, RGB 값으로 구성된 n×3 배열)과 동일하므로, 이 예제에서는 hsv 컬러맵을 사용하여 단순 음영에 필요한 6가지 색을 생성합니다.

면 색을 현재 컬러맵에 매핑하려면 FaceVertexCData 속성에 n×1 배열을 할당하십시오.

patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',(1:6)','FaceColor','flat')

다음과 같이 좌표축을 조정합니다.

view(3)
axis vis3d

보간 면 채색

보간 면 채색은 각 면의 꼭짓점 색이 한 꼭짓점에서 다음 꼭짓점으로의 색의 변화를 정의한다는 것을 의미합니다. 꼭짓점 간에 색을 보간하려면 각 꼭짓점의 색을 지정하고 FaceColor 속성을 interp로 설정해야 합니다.

patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',hsv(8),'FaceColor','interp')

다음과 같이 좌표축을 조정합니다.

view(3)
axis vis3d

그러면 꼭짓점 색을 보간하여 각 면이 채색된 정육면체가 생성됩니다.

x, y, z, c 기법을 사용하여 동일한 채색 방법을 지정하려면 c는 m×n×3 배열이어야 하는데, 여기서 x, y, z의 차원은 m×n입니다.

다음 도식은 FaceVertexCData 속성과 CData 속성 사이의 대응 관계를 보여줍니다.

패치 데이터와 컬러맵 간의 관계에 채색 기법에 대한 자세한 설명이 나와 있습니다.