흐름 입자 애니메이션 만들기
시간에 따른 발사체 경로
이 예제에서는 3차원 퀴버 플롯을 사용하여 시간 함수로 발사체 경로를 표시하는 방법을 보여줍니다.
속도와 가속도를 나타내는 상수 vz
와 a
를 사용하여 발사체의 그다음 경로를 표시합니다. 0에서 1 사이 시간에서의 높이 z
를 계산합니다.
vz = 10; % velocity constant a = -32; % acceleration constant t = 0:.1:1; z = vz*t + 1/2*a*t.^2;
x 방향과 y 방향의 위치를 계산합니다.
vx = 2; x = vx*t; vy = 3; y = vy*t;
속도 벡터의 성분을 계산하고 3차원 퀴버 플롯을 사용하여 벡터를 표시합니다. 좌표축의 시점을 [70,18]
로 변경합니다.
u = gradient(x); v = gradient(y); w = gradient(z); scale = 0; figure quiver3(x,y,z,u,v,w,scale) view([70,18])
입자 애니메이션으로 표시할 수 있는 내용
흐름 입자 애니메이션은 벡터장의 흐름 방향과 속도를 시각화하는 데 유용합니다. “입자”(임의의 선 마커로 나타냄)는 특정 흐름선을 따라 흐름을 추적합니다. 애니메이션에서 각 입자의 속도는 흐름선을 따라 임의의 주어진 점에서 벡터장의 크기에 비례합니다.
1. 데이터 범위의 시작점 지정하기
이 예제에서는 적합한 시작점을 지정하여 플로팅할 볼륨의 영역을 결정합니다. 이 경우, 흐름 플롯은 x = 100에서 시작하고 z = 5 평면에서 y의 범위는 20~50인데, 이는 전체 볼륨 범위가 아닙니다.
load wind [sx sy sz] = meshgrid(100,20:2:50,5);
2. 흐름선을 생성하여 입자 경로 나타내기
이 예제에서는 흐름선(stream3
, streamline
)을 사용하여 애니메이션된 입자의 경로를 추적하여 애니메이션의 시각적 맥락을 더합니다.
verts = stream3(x,y,z,u,v,w,sx,sy,sz); sl = streamline(verts);
3. 보기 정의하기
모든 흐름선은 z = 5 평면에서 시작하지만, 일부 흐름선의 값은 이보다 더 낮은 값으로 나선형으로 떨어집니다. 다음과 같이 설정하면 애니메이션을 명확하게 표시할 수 있습니다.
4. 흐름 입자 꼭짓점 계산하기
입자가 그려질 흐름선상의 꼭짓점을 결정합니다. interpstreamspeed
함수는 흐름선 꼭짓점과 벡터 데이터의 속도를 기준으로 이 데이터를 반환합니다. 이 예제에서는 속도를 0.05 간격으로 스케일링하여 보간된 꼭짓점의 개수를 늘립니다.
애니메이션이 더 빠르게 실행되도록 좌표축의 SortMethod
속성을 childorder
로 설정합니다.
streamparticles
함수는 다음 속성을 설정합니다.
Animate
를10
으로 설정하여 애니메이션을 10회 실행합니다.ParticleAlignment
를on
으로 설정하여 모든 입자 추적을 함께 시작합니다.MarkerEdgeColor
를none
으로 설정하여 원형 마커의 면만 그립니다. 마커 가장자리를 그리지 않으면 애니메이션이 보통 더 빠르게 실행됩니다.MarkerFaceColor
를red
로 설정합니다.Marker
를o
로 설정하여 원형 마커를 그립니다. 다른 선 마커도 사용할 수 있습니다.iverts = interpstreamspeed(x,y,z,u,v,w,verts,0.01); set(gca,'SortMethod','childorder'); streamparticles(iverts,15,... 'Animate',10,... 'ParticleAlignment','on',... 'MarkerEdgeColor','none',... 'MarkerFaceColor','red',... 'Marker','o');