Main Content

슬라이스 평면으로 볼륨 탐색하기

유체 흐름 데이터의 슬라이스 만들기

슬라이스 평면(꼭 평면일 필요는 없음)은 슬라이스가 위치한 영역의 볼륨 데이터 값을 기준으로 색을 채색되는 곡면입니다. 슬라이스 평면은 의미 있는 영역이 어디에 존재하는지를 발견하기 위해 볼륨 데이터 세트를 조사하는 데 유용하며, 이렇게 발견한 영역은 다른 유형의 그래프로 시각화할 수 있습니다(slice 예제 참조). 슬라이스 평면은 다른 그래프 생성 방법도 사용되는 경우 볼륨의 경계에 시각적 맥락을 더하는 데에도 유용합니다(예제는 coneplot벡터 데이터를 사용하여 흐름선 표시하기 참조).

slice 함수를 사용하여 슬라이스 평면을 생성할 수 있습니다. 이 예제에서는 flow로 생성되는 볼륨을 자르는 슬라이스를 만듭니다.

1. 데이터 조사하기

다음 명령으로 볼륨 데이터를 생성합니다.

[x,y,z,v] = flow;

좌표 데이터의 최솟값과 최댓값을 찾아 볼륨의 범위를 결정합니다.

xmin = min(x(:)); 
ymin = min(y(:)); 
zmin = min(z(:));

xmax = max(x(:)); 
ymax = max(y(:)); 
zmax = max(z(:));

2. x축에 대해 비스듬한 슬라이스 평면 만들기

좌표축 평면에 놓여 있지 않은 슬라이스 평면을 만들려면 먼저 곡면을 정의한 후 원하는 방향으로 회전해야 합니다. 이 예제에서는 볼륨과 동일한 x, y 좌표를 가진 곡면을 사용합니다.

hslice = surf(linspace(xmin,xmax,100),...
   linspace(ymin,ymax,100),...
   zeros(100));

x축을 중심으로 곡면을 -45도 회전하고 곡면 XData, YData, ZData를 저장하여 슬라이스 곡면을 정의한 후 곡면을 삭제합니다.

rotate(hslice,[-1,0,0],-45)
xd = get(hslice,'XData');
yd = get(hslice,'YData');
zd = get(hslice,'ZData');

delete(hslice)

3. 슬라이스 평면 그리기

회전된 슬라이스 평면을 그립니다. 이때 Figure의 컬러맵으로 채색되도록 FaceColorinterp로 설정하고 EdgeColornone으로 설정합니다. 광원을 추가한 후 DiffuseStrength.8로 늘려 이 평면이 더 밝게 빛나도록 합니다.

colormap(turbo)
h = slice(x,y,z,v,xd,yd,zd);
h.FaceColor = 'interp';
h.EdgeColor = 'none';
h.DiffuseStrength = 0.8;

holdon으로 설정하고 xmax, ymax, zmin에 직교 슬라이스 평면을 3개 더 추가하여 비스듬하게 볼륨을 잘라 슬라이스를 만드는 첫 번째 평면에 대한 맥락을 제공합니다.

hold on
hx = slice(x,y,z,v,xmax,[],[]);
hx.FaceColor = 'interp';
hx.EdgeColor = 'none';

hy = slice(x,y,z,v,[],ymax,[]);
hy.FaceColor = 'interp';
hy.EdgeColor = 'none';

hz = slice(x,y,z,v,[],[],zmin);
hz.FaceColor = 'interp';
hz.EdgeColor = 'none';

4. 보기 정의하기

볼륨을 올바른 비율로 표시하려면 데이터 종횡비를 [1,1,1]로 설정하십시오(daspect). 축을 조정해 슬라이스가 볼륨에 꼭 맞도록 합니다(axis). 처음에는 rotate3d를 사용하여 좌표축의 방향을 선택하여 최상의 view를 결정할 수 있습니다.

장면을 확대하면 볼륨이 더 크게 표시됩니다(camzoom). 투영 유형을 perspective로 선택하면 직육면체가 디폴트 직교 투영보다 더 자연스러운 비율로 표시됩니다(camproj).

daspect([1,1,1])
axis tight
view(-38.5,16)
camzoom(1.4)
camproj perspective

5. 조명 추가하고 색 지정하기

장면에 조명을 추가하면 각각의 평면이 광원(lightangle)과 다른 각도를 형성하므로 네 개의 슬라이스 평면 사이의 경계가 더욱 명백해집니다. 24색(디폴트 값은 64임)으로만 구성된 컬러맵을 선택하면 볼륨 내 변화를 더 뚜렷하게 나타내는 색의 농담 효과를 낼 수 있습니다.

lightangle(-45,45)
colormap(turbo(24))

색 매핑 수정하기에 데이터가 색에 매핑되는 방식을 수정하는 방법이 나와 있습니다.

색 매핑 수정하기

현재 컬러맵은 슬라이스 평면의 채색 방법을 결정합니다. 따라서 다음과 같은 방법으로 슬라이스 평면 채색 방법을 변경할 수 있습니다.

  • 컬러맵 변경

  • 색에 대한 데이터 값 매핑 변경

예를 들어, -5와 2.5 사이의 데이터 값에만 관심이 있고 더 낮은 값은 빨간색으로, 더 높은 값은 파란색으로 매핑한 컬러맵(즉, 디폴트 turbo 컬러맵의 반대)을 사용하고 싶다고 가정해 보겠습니다.

1. 컬러맵 사용자 지정하기

colormapflipud를 사용하여 컬러맵을 뒤집습니다.

colormap(flipud(turbo(24)))

2. 색 제한 조정하기

색 제한을 조정하여 관심 있는 특정 데이터 범위를 강조합니다. 색 제한을 -5에서 2.4832까지의 범위로 조정하여 -5(원래 데이터 범위는 -11.5417~2.4832임)보다 낮은 값을 동일한 색으로 매핑합니다.

clim([-5,2.4832])

R2022a 이전: clim과 동일한 구문과 인수를 가지는 caxis를 사용하여 색 제한을 조정하십시오.

3. 컬러바 추가하기

컬러바를 추가하여 데이터와 색 간의 매핑에 대한 참조 자료를 제공할 수 있습니다.

colorbar('southoutside')