상세 컨텐츠

본문 제목

3D Plot (3차원 그래프 그리기) - 1

장.Matlab/3D Graphic , Handle Graphics

by 수내동떡볶이주먹 2021. 1. 29. 16:59

본문

2차원 그래프는 엑셀로 많이 그리겠지만, 3차원 그래프를 엑셀로 많이 그리지는 않을것이다.

 

학교에서 과제를 하다보면 3차원 그래프를 그려야 할 경우가 자주 생긴다.

 

혹은 공학수학을 공부하면서 , 유체역학 , 기계제어 등 여러가지 과목을 공부하면서 3차원 상의 그래프를 확인해보고 싶

 

은 경우가 많을 것이다. 개인적인 경험으로 matlab 만큼 3차원 그래프를 그리기 쉽고  , 해석하기 쉬운 툴은 없는것같다. 

 

초보자도 간단한 원리와 함수만 안다면 매우 쉽게 원하는 그래프를 그릴 수 있다.

 

 

1. 3차원 곡선 그리기

 

전에도 말했듯이 matlab의 기본 구조는 행렬이다. 점이 아닌 직선을 그릴때 내가 얼마나 정의역을 촘촘하게 나누었는지에 따라 점과 점을 이은 직선이 곡선에 근접하게 근사하여 그릴 수 있다. 

등고선이나 면을 그릴때와 달리, 단순히 곡선을 그릴경우에는 meshgrid를 짜줄 필요가 없다.

 

그리고 2차원 그래프 그리는명령어가 plot이었다면 

3차원은 간단히 plot3로 그리면 된다.

 

예시로 용수철과같은 그래프를 한번 그려보자.

 

 

 

2. 3차원 면 그리기

 

3차원에서 면을 나타내는 방법은 여러가지가 있다. mesh를 사용하여도 좋고 , surf를 사용하여도 좋다.

 

표면적인 mesh 와 surf의 차이는 mesh는 좀 투명하고 surf는 불투명하다.

 

먼저 mesh 를 사용하여 면을 나타내어 보자.

 

meshc는 밑면에 등고선을 함께 그려주는 명령어이다

 

mesh(x grid , y grid , z grid)

혹은 그냥 mesh(Z) 라고 해도 무방하다

 

surf 명령어를 이용하여 구를 그려보자

구는 sphere이라는 명령어를 사용하면 쉽지만 

정석적으로 구를 파라미터 함수를 이용하여 그리는 방법을 시도해 보도록 하겠다

위 코드 처럼 구를 그릴때는 r 과 각도 theta를 이용한 극좌표로 meshgrid를 형성하여 그릴 수 있다.

당연히 처음에 theta 와 r 의 간격을 촘촘하게 할 수록 점점 완벽한 구에 가까워진다.

 

격자모양의 그림이 마음에 안든다면 다양항 명령어를 통해 보이는 면의 형태를 바꿀 수 있다

 

 

3. 수준곡선(등고선) 과 면의 교차

 

내가 그린 3차원 그래프와 특정한 면을 이용하여 교차면을 추출하고 싶은 경우가 많을 것이다.

조금 어려워보일 수 있어도 그렇게 어렵지 않으니 한번 따라해 보면 좋을것 같다

 

약간 코드가 길다고 느낄 수도 있지만 천천히 따라해 보면 

peaks라는 mesh 를 그리고 

그 그래프를 자르는 평면을 그린후

교차되는 부분을 등고선으로 나타내는 것이다.

 

 

4. 3차원 등고선 그리기

 

지금까지 등고선은 평면에다가 그리는 것만 해보았다.

그러나 높이 축을 고려하여 3차원 그래프로 등고선을 그릴 수 있다.

 

plot 명령어와 비슷하게 contour를 contour3로만 바꾸어주면 된다.

 

 

contour3(x grid , y grid , z grid , 등고선 갯수)

 

'장.Matlab > 3D Graphic , Handle Graphics' 카테고리의 다른 글

Handle Graphics  (0) 2021.01.30
3 차원 Plot - 2  (0) 2021.01.29

관련글 더보기

댓글 영역