다중 패싯 패치

예제 — 정육면체 정의하기

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

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

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

X, Y, Z 좌표 지정하기

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

행렬의 각 열은 제각기 다른 면을 지정합니다. 꼭짓점은 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 값으로 구성된 nx3 배열)과 동일하므로, 이 예제에서는 hsv 컬러맵을 사용하여 단순 음영에 필요한 6가지 색을 생성합니다.

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

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는 mxnx3 배열이어야 하는데, 여기서 x, y, z의 차원은 mxn입니다.

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

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