원뿔 플롯으로 표시되는 벡터장
원뿔 플롯으로 표시할 수 있는 내용
이 예제에서는 wind
데이터에 대한 속도 벡터 원뿔을 플로팅합니다. 생성되는 그래프에는 다음과 같이 여러 가지 시각화 기법이 사용됩니다.
등가곡면은 원뿔 플롯에 대한 시각적 맥락을 제공하고 원뿔 집합에 대해 특정한 데이터 값을 선택할 수단을 제공하는 데 사용됩니다.
조명을 사용하면 등가곡면의 형태가 분명히 보이도록 할 수 있습니다.
원근 투영, 카메라 위치 지정, 시야각 조정을 사용하여 최종 보기를 구성합니다.
1. 등가곡면 만들기
데이터의 사각 공간 내에 등가곡면을 표시하여 원뿔 플롯에 대한 시각적 맥락을 제공할 수 있습니다. 등가곡면을 생성하려면 다음과 같은 몇 가지 단계를 수행해야 합니다.
풍속을 나타내는 벡터장의 크기를 계산합니다.
isosurface
와patch
를 사용하여 사각 공간에서 풍속이 특정 값과 같아지는 곳을 보여주는 등가곡면을 그립니다. 등가곡면 내부의 영역은 풍속이 높고 외부의 영역은 풍속이 낮습니다.isonormals
를 사용하여 등가곡면 렌더링에 사용되는 삼각형에서 꼭짓점 법선을 계산하는 것이 아니라 볼륨 데이터에서 등가곡면의 꼭짓점 법선을 계산합니다. 이러한 법선이 일반적으로 더 정확한 결과를 생성합니다.등가곡면을 빨간색으로 채우고 가장자리를 그리지 않도록 등가곡면의 시각적 속성을 설정합니다(
FaceColor
,EdgeColor
).load wind wind_speed = sqrt(u.^2 + v.^2 + w.^2); hiso = patch(isosurface(x,y,z,wind_speed,40)); isonormals(x,y,z,wind_speed,hiso) hiso.FaceColor = 'red'; hiso.EdgeColor = 'none';
2. 등가곡면에 등가단면 추가하기
등가단면은 볼륨의 단면을 보여준다는 점에서 슬라이스 평면과 유사합니다. 등가단면은 등가곡면의 단면이 되도록 만들어졌습니다. 등가단면에서 보간 면 채색을 사용하면 데이터 값이 현재 컬러맵의 색에 매핑됩니다. 등가곡면의 등가단면을 생성하려면 같은 등가값에서 등가단면을 정의하십시오(isocaps
, patch
, colormap
).
hcap = patch(isocaps(x,y,z,wind_speed,40),... 'FaceColor','interp',... 'EdgeColor','none'); colormap hsv
3. 첫 번째 원뿔 집합 만들기
coneplot
을 호출하기 전에 함수가 적합한 원뿔 크기를 결정할 수 있도록daspect
를 사용하여 좌표축의 데이터 종횡비를 설정합니다.원뿔이 첫 번째 등가곡면 바깥에 표시되도록 등가값이 더 작은 다른 등가곡면을 계산하여 원뿔을 배치할 점을 결정하고, 그래프에 원뿔이 너무 많이 표시되지 않도록
reducepatch
를 사용하여 면과 꼭짓점의 개수를 줄입니다.원뿔을 그리고 면 색을
blue
로 설정하고 가장자리 색을none
으로 설정합니다.daspect([1 1 1]); [f,verts] = reducepatch(isosurface(x,y,z,wind_speed,30),0.07); h1 = coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),3); h1.FaceColor = 'blue'; h1.EdgeColor = 'none';
4. 두 번째 원뿔 집합 만들기
두 번째 원뿔 집합을 그린 후, 면 색을 녹색으로 설정하고 가장자리 색에는 아무 색도 설정하지 않습니다.
xrange = linspace(min(x(:)),max(x(:)),10); yrange = linspace(min(y(:)),max(y(:)),10); zrange = 3:4:15; [cx,cy,cz] = meshgrid(xrange,yrange,zrange); h2 = coneplot(x,y,z,u,v,w,cx,cy,cz,2); h2.FaceColor = 'green'; h2.EdgeColor = 'none';
5. 보기 정의하기
6. 조명 추가하기
광원을 추가하고 등가곡면에 가장 부드러운 조명 효과를 주기 위해 구로(Gouraud) 조명을 사용합니다. 등가단면에서 배경 조명의 강도를 늘려 등가단면을 더 밝게 만듭니다(camlight
, lighting
, AmbientStrength
).
camlight(-45,45) hcap.AmbientStrength = 0.6; lighting gouraud