본문으로 바로가기

요즘 엔지니어로 살아가기 참~ 힘이 듭니다. 왜냐구요? 해보고싶은게 너~~~무 많거든요. ㅎㅎㅎ 딥러닝도 해보고 싶고.. 그 유행한다는 자율주행도 익혀보고 싶고... 이것저것 전시회도 다녀보고싶고ㅠㅠ. 그러나 현실은... 해야할 일이 더~~~ 많다는 것이 문제지요. ㅎㅎ^^ 뭐~ 아무튼... 이것 저것 하다가.. 오늘은 MATLAB에서 3D 그래프를 그릴 때 보는 관점을 설정하는 view함수와 3D로 화살표를 멋지게 잘 그려주는 quiver3라는 함수를 소개할 까 합니다.^^ 두 함수를 모두 이야기할려구요. ㅎ^^

quiver3(0,0,0, 1,1,1)

위 한 줄 짜리 코드를 보면... 앞서 (0,0,0)은 벡터의 시작점이구요. (1,1,1)은 방향벡터입니다. 뭐 쉬운 이야기죠^^ 이 걸 실행하면

요딴 그림 하나를 얻을 수 있습니다. 이제.. view함수가 등장해야겠네요~~^^

출처 : MATLAB 공식 매뉴얼 http://kr.mathworks.com/help/matlab/ref/view.html?searchHighlight=view

일단 view함수의 가장 일반적인 사용옵션을 이용할려면은 위 그림을 이해하시면 됩니다. 

quiver3(0,0,0, 1,1,1)

xlabel('x')
ylabel('y')
zlabel('z')

view(-45, 0)

똑같이 quiver3(0,0,0, 1,1,1)을 두고... 구분을 잘 하기 위해 x,y,z축 라벨도 달구요.. view함수로 Azimuth(방위각)을 -45로 해서 y축과 x축을 45도씩 바라보게 하고... Elevation(고도)를 0로 해서 z축을 바라보게 설정한 것입니다.

아하~~~ 요렇게 나오네요...^^ 이제 quiver3와 view 함수를 이야기했네요~~^^ 응?? 이렇게 마치면 좀 심심하니까.. 뭐 그림 몇 개 더 그려보죠&^^

quiver3(0,0,0, 1,0,0, 'Color', 'red', 'LineWidth', 2)
hold on
quiver3(0,0,0, 0,1,0, 'Color', 'green', 'LineWidth', 2)
quiver3(0,0,0, 0,0,1, 'Color', 'blue', 'LineWidth', 2)
xlabel('x')
ylabel('y')
zlabel('z')
hold off

view(45, 20)
axis([-1.5 1.5 -1.5 1.5 -1.5 1.5])

위 코드는 원점(0,0,0)에서 x축, y축, z축 방향으로 크기가 1인 단위벡터를 각 색상을 R-G-B로 설정하고... 선의 두께(LineWidth)를 2로 설정하는 것입니다.

ㅎㅎ.. 괜찮네요~~^^ MATLAB의 공식 매뉴얼에 나오는 quiver3예제의 한 그림도 이야기해보죠

x = -3:0.5:3;
y = -3:0.5:3;
[X,Y] = meshgrid(x, y);
Z = Y.^2 - X.^2;
[U,V,W] = surfnorm(Z);

figure
quiver3(Z,U,V,W)
view(-35,45)

이 예제는 x, y 변수를 이용해서 정방향 데이터(meshgrid)를 얻은 다음 Y^2 - X^2이라는 함수에 대입하여 얻은 Z값을 가지고 법선벡터를 찾아주는 함수(surfnorm)에 의해 U,V,W 벡터를 찾아서 그리는 것입니다.

ㅎㅎ 이쁘죠^^ 유체와 같은 흐름을 표현하기 괜찮은 아이이기도 하죠^^

신고