흐름 관으로 발산 표시하기
흐름 관으로 표시할 수 있는 내용
흐름 관은 너비가 있어 정보를 나타내는 데 사용할 수 있는 다른 차원을 제공한다는 점을 제외하면 흐름선과 비슷합니다.
기본적으로, MATLAB® 그래픽스는 흐름 관의 너비로 벡터장의 발산을 표시합니다. 각 흐름 관의 꼭짓점의 너비를 정의하여 다른 데이터를 너비에 매핑할 수도 있습니다.
이 예제에서는 다음과 같은 기법을 사용합니다.
흐름 관으로
wind
데이터 세트에 있는 벡터장의 발산과 흐름 방향 나타내기가시성 향상을 위해 채색된 슬라이스 평면에 등고선을 겹쳐 풍류 속도 나타내기
입력값에는 볼륨의 좌표, 벡터장 성분, 흐름 관의 시작 위치가 포함됩니다.
1. 데이터를 불러오고 필요한 값 계산하기
데이터를 불러오고 플롯을 만드는 데 필요한 값을 계산합니다. 필요한 값은 다음과 같습니다.
슬라이스 평면의 위치(최대
x
, 최소y
, 고도 값)흐름 관의 시작을 나타내는 최소
x
값풍속(벡터장의 크기)
load wind xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); alt = 7.356; % z value for slice and streamtube plane wind_speed = sqrt(u.^2 + v.^2 + w.^2);
2. 슬라이스 평면 그리기
슬라이스 평면을 그리고(slice
) surface
속성을 설정하여 매끄럽게 채색된 슬라이스를 생성합니다. hsv
colormap
에서 16색을 사용합니다.
hslice = slice(x,y,z,wind_speed,xmax,ymin,alt); set(hslice,'FaceColor','interp','EdgeColor','none') colormap hsv(16)
3. 슬라이스 평면에 등고선 추가하기
슬라이스 평면에 등고선을 추가합니다(contourslice
). 다음과 같이 슬라이스 평면에서 선이 색 경계와 일치하도록 등고선 간격을 조정합니다.
clim
을 호출하여 현재 색 제한을 가져옵니다.R2022a 이전:
clim
과 동일한 구문과 인수를 가지는caxis
를 사용하십시오.slice
가 사용하는 디폴트 값과 일치하도록contourslice
가 사용하는 보간 방법을linear
로 설정합니다.color_lim = clim; cont_intervals = linspace(color_lim(1),color_lim(2),17); hcont = contourslice(x,y,z,wind_speed,xmax,ymin,... alt,cont_intervals,'linear'); set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1)
4. 흐름 관 만들기
meshgrid
를 사용하여 흐름 관의 시작점을 나타내는 배열을 생성합니다. 흐름 관은 x
의 최솟값에서 시작하며, y
의 범위는 20~50이며 z
의 단일 평면(슬라이스 평면 중 하나에 상응함)에 놓여 있습니다.
흐름 관(streamtube
)은 지정된 위치에 그려지고 발산(너비)의 변화를 강조하기 위해 디폴트 너비의 1.25배로 커집니다. 벡터 [1.25 30]의 두 번째 요소는 흐름 관의 원주를 따라 점의 개수를 지정합니다(디폴트 값은 20임). 흐름 관의 크기가 증가하는 경우에도 흐름 관이 계속 매끄러운 모습을 유지할 수 있도록 사용자는 이 값을 늘리는 것을 고려할 수도 있습니다.
streamtube
를 호출하기 전에 데이터 종횡비를 설정합니다(daspect
).
흐름 관은 surface 객체이므로 surface 속성을 설정하여 모양을 제어할 수 있습니다. 이 예제에서는 밝게 조명이 비치는 빨간색 곡면으로 표시되도록 surface 속성을 설정합니다.
[sx,sy,sz] = meshgrid(xmin,20:3:50,alt);
daspect([1,1,1]) % set DAR before calling streamtube
htubes = streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]);
set(htubes,'EdgeColor','none','FaceColor','r',...
'AmbientStrength',.5)
5. 보기 정의하기
보기를 정의하고 조명을 추가합니다(view
, axis
volumebounds
, Projection
, camlight
).
view(-100,30) axis(volumebounds(x,y,z,wind_speed)) set(gca,'Projection','perspective') camlight left