patch 객체 소개

patch 객체란?

patch 그래픽스 객체는 연결되어 있을 수도 있고 그렇지 않을 수도 있는 하나 이상의 다각형으로 구성됩니다. 패치는 비행기나 자동차 같은 실생활의 객체를 모델링하고 임의 형태의 2차원 또는 3차원 다각형을 그리는 데 유용합니다.

반대로, surface 객체는 사변형으로 구성된 사각 그리드로서 2변수 수학 함수의 값, 사각 평면의 데이터 등고선, 파라미터가 설정된 곡면(예: 구) 등의 평면 지형을 표시하는 데 더 적합합니다.

fill, fill3, isosurface, isocaps 함수, 일부 contour 함수와 patch 등 여러 가지 MATLAB® 함수가 patch 객체를 생성할 수 있습니다. 이 섹션에서는 patch 함수 사용에 대해 집중적으로 설명합니다.

사용자는 꼭짓점의 좌표와 색 데이터의 형식을 지정하여 패치를 정의할 수 있습니다. 패치는 기하학적 도형 위에 겹쳐 놓은 데이터를 시각화하는 데 유용한 다양한 채색 옵션을 지원합니다.

패치를 지정하는 방법으로는 다음과 같이 두 가지가 있습니다.

  • 서로 연결되어 패치를 형성하는 각각의 다각형의 꼭짓점 좌표 지정

  • 각각의 고유한 꼭짓점 좌표와 이러한 꼭짓점을 연결하여 면을 형성하는 방법을 지정하는 행렬 지정

다중 패싯 패치에는 두 번째 기법이 선호되는데, 그 이유는 패치를 정의하는 데 필요한 데이터가 일반적으로 더 적기 때문입니다. 두 개 이상의 면이 공유하는 꼭짓점은 한 번만 정의하면 됩니다. 이 섹션에서는 두 가지 기법에 대한 예제를 모두 제공합니다.

patch 함수의 동작

patch 함수에는 하이 레벨 구문과 로우 레벨 구문의 두 가지 형식이 있습니다. patch 함수의 동작은 사용하는 구문에 따라 약간 달라집니다.

하이 레벨 구문

하이 레벨 구문을 사용하면 MATLAB이 사용자가 지정하는 색 데이터를 기준으로 각 면을 채색하는 방법을 자동으로 결정합니다. 이들 인수를 올바른 순서대로 지정하기만 하면 하이 레벨 구문 사용 시 x, y, z 좌표와 색 데이터에 대한 속성 이름을 생략할 수 있습니다.

patch(x-coordinates,y-coordinates,z-coordinates,colordata)

하지만 사용자는 MATLAB이 어떤 유형의 채색 방법을 사용할지 결정할 수 있도록 색 데이터를 지정해야 합니다. 색 데이터를 지정하지 않으면 MATLAB이 오류를 반환합니다.

x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y)
Error using patch
Not enough input arguments.

로우 레벨 구문

로우 레벨 구문은 속성 이름/속성값 쌍만을 인수로 받으며 FaceColor 속성의 값도 함께 변경하지 않으면 자동으로 면을 채색하지 않습니다. 예를 들어, 다음 명령문은

patch('XData',x,'YData',y) 

면 색을 검은색으로 하여 패치를 그리는데, 이는 FaceColor 속성의 공장 초기값이 검은색이기 때문입니다.

get(groot,'FactoryPatchFaceColor')
ans =
      0     0     0

속성의 공장 초기값과 사용자 디폴트 값을 구하는 방법에 대한 자세한 내용은 MATLAB 함수 도움말 문서의 Patch 속성 목록과 get 명령을 참조하십시오.

색 인수 해석하기

하이 레벨 구문을 사용하면 MATLAB이 세 번째(z 좌표가 있는 경우에는 네 번째) 인수를 색 데이터로 해석합니다. x, y, z 좌표로 패치를 정의하되 색을 생략하는 경우 MATLAB은 z 좌표를 색 데이터로 해석하고 2차원 패치를 그립니다. 예를 들어, 다음은

patch(x,y,1:length(x))

z = 0에 모든 꼭짓점이 있는 패치를 그린 후 (꼭짓점마다 한 가지 색이 있으므로) 꼭짓점 색을 보간하여 채색합니다. 반면에 다음은

patch(x,y,1:length(x),'y')

증가하는 z의 값에 꼭짓점이 있는 패치를 그린 후 노란색으로 채색합니다.

패치 데이터와 컬러맵 간의 관계에 패치 채색 옵션에 대한 자세한 내용이 나와 있습니다.

단일 다각형 만들기

다각형은 단순히 면이 하나인 패치입니다. 다각형을 만들려면 다음 형식의 명령문을 사용하여 꼭짓점 좌표와 색 데이터를 지정하십시오.

patch(x-coordinates,y-coordinates,[z-coordinates],colordata)

예를 들어, 다음 명령문은 가장자리가 검은색으로 둘러싸이고 면의 색이 노란색인 변이 10개인 다각형을 표시합니다. axis equal 명령은 올바른 비율의 다각형을 생성합니다.

t = 0:pi/5:2*pi;
figure
patch(sin(t),cos(t),'y')
axis equal

MATLAB이 패치의 각 다각형 면을 자동으로 닫아주므로 첫 번째 꼭짓점과 마지막 꼭짓점이 일치할 필요는 없습니다. 사실 일반적으로는 각각의 꼭짓점을 한 번만 정의하는 것이 더 나은데, 특히 보간 면 채색을 사용하는 경우 그렇습니다.

보간 면 채색

사용자는 패치 채색의 많은 부분을 제어할 수 있습니다. 예를 들어, 사용자는 단일 색을 지정하는 대신에 각 꼭짓점의 색을 Figure 컬러맵의 색으로 매핑하는 특정 범위의 숫자형 값을 입력할 수 있습니다.

a = t(1:length(t)-1); %remove redundant vertex definition
figure
patch(sin(a),cos(a),1:length(a),'FaceColor','interp')
axis equal

MATLAB이 이제 패치의 면 전체에 걸쳐 색을 보간합니다. 보간할 가장자리 색을 설정하여 패치의 가장자리를 같은 방식으로 채색할 수 있습니다. 그 명령은 다음과 같습니다.

patch(sin(a),cos(a),1:length(a),'EdgeColor','interp')

패치 데이터와 컬러맵 간의 관계에 패치 채색 옵션에 대한 자세한 내용이 나와 있습니다.