메시 플롯과 곡면 플롯 만들기
메시 플롯 및 곡면 플롯 정보
MATLAB®에서는 x-y 평면 그리드 점들에서 z 좌표로 인접한 점들을 직선으로 연결해 곡면을 정의합니다. mesh
함수와 surf
함수는 곡면을 3차원으로 표시합니다.
mesh
는 정의된 점들이 연결된 선만 색으로 표시하는, 와이어프레임 곡면을 생성합니다.surf
는 연결선과 곡면의 면을 모두 색으로 표시합니다.
MATLAB은 z 데이터 값을 Figure 컬러맵의 인덱스에 매핑하여 곡면을 색으로 표시합니다.
두 개의 변수로 구성된 함수 시각화
두 개의 변수로 구성된 함수 z = f (x,y)를 표시하려면 다음을 수행하십시오.
반복되는 행과 열로 구성된
X
행렬과Y
행렬을 각각 함수의 정의역 위에 생성합니다.X
와Y
를 사용하여 함수를 실행하고 그래프로 나타냅니다.
meshgrid
함수는 단일 벡터 또는 두 개의 벡터 x
와 y
로 지정된 정의역을 행렬 X
와 행렬 Y
로 변환해 두 개의 변수로 구성된 함수를 실행할 수 있도록 합니다. X
의 행은 벡터 x
의 복사본이며 Y
의 열은 벡터 y
의 복사본입니다.
sinc
함수 그래프 표시
이 예제에서는 x 방향과 y 방향 사이에 2차원 sinc
함수 sin(R)/R을 실행하고 그래프로 나타내는 방법을 보여줍니다. R은 행렬의 중심에 있는 원점으로부터의 거리입니다. eps
(매우 작은 값)를 추가하면 R = 0
인 점에서 메시에 구멍이 생성되지 않습니다.
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)
기본적으로 MATLAB®에서는 현재 컬러맵을 사용하여 메시를 채색합니다.
채색된 곡면 플롯
이 예제에서는 sinc
함수의 그래프를 곡면 플롯으로 나타내고, 컬러맵을 지정하며, 컬러바를 추가하여 데이터와 색의 매핑을 표시하는 방법을 보여줍니다.
곡면 플롯은 곡면의 사각형 면이 채색된다는 점만 제외하면 메시 플롯과 비슷합니다. 각 면의 색은 Z
값과 컬러맵(순서가 지정된 색 목록)으로 결정됩니다.
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
colorbar
투명한 곡면 만들기
이 예제에서는 곡면의 면을 다양한 각도로 투명하게 만들 수 있는 방법을 보여줍니다. 투명도(알파 값이라고도 함)는 전체 객체에 대해 지정할 수도 있고 컬러맵과 유사하게 동작하는 alphamap
을 기반으로 지정할 수도 있습니다.
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
alpha(.4)
MATLAB®에 면 알파 값이 0.4인 곡면이 표시됩니다. 알파 값의 범위는 0(완전 투명)에서 1(불투명) 사이입니다.
곡면 플롯에 조명 효과 지정
이 예제에서는 앞의 예제와 동일한 곡면을 보여주지만 곡면을 빨간색으로 채색하고 메시 선을 제거합니다. 그런 다음 "카메라" 왼쪽에 light 객체를 추가합니다. 여기서 카메라는 사용자가 곡면을 바라보는 공간 내의 위치를 말합니다.
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surf(X,Y,Z,'FaceColor','red','EdgeColor','none') camlight left; lighting phong
조명은 방향성 광원으로 객체에 조명 효과를 지정하는 기법입니다. 특정한 상황에서 이 기법을 사용하면 곡면 형태에 미묘한 차이가 발생하여 형태가 눈에 더 잘 띄는 효과를 얻을 수 있습니다. 조명 기법을 사용하면 3차원 그래프에 사실성을 더할 수 있습니다.
곡면 조작
Figure 도구 모음과 카메라 도구 모음을 사용하면 3차원 그래픽스를 대화형 방식으로 탐색할 수 있습니다. 카메라 도구 모음을 표시하려면 Figure의 보기 메뉴에서 카메라 도구 모음을 선택합니다.
다음 그림에는 두 개의 도구 모음이 표시되며, 3차원 회전 툴이 선택되어 있습니다.
이 툴들을 사용하면 surface 객체 주위로 카메라를 이동하고, 확대/축소하고, 조명 효과를 추가하고, 명령줄에 명령을 실행하지 않고도 다른 보기 작업을 수행할 수 있습니다.