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 , 등고선 갯수)
Handle Graphics (0) | 2021.01.30 |
---|---|
3 차원 Plot - 2 (0) | 2021.01.29 |
댓글 영역