오늘은 간단하게 MATLAB 을 사용하여 원을 그리는 방법에 대해 소개하려 합니다.
아래 포스팅에서도 소개한 적이 있지만~ 아래 포스팅에서는 ezplot 를 사용하여 그래프를 그렸었는데~
2011/03/13 - [programming language/MATLAB] - MATLAB ezplot() 함수로 그래프를 쉽게 그리자
오늘은 수치적인 방법으로 그래프를 그려 보도록 하죠~
원이나 다각형 그래프들은 단순한 그래프라 조그만 생각해 보고 코딩하면 되겠지만
MATLAB File Exchange 에 보니 괜찮은 코드가 있어서 소개 하려 합니다.
http://www.mathworks.com/matlabcentral/fileexchange/2876-draw-a-circle
위 주소에서 아래 그림과 같이 코드를 다운로드 받습니다.
다운로드 받은 circle.zip 파일을 풀어보면~ circle.m 파일이 있는데요~
circle.m 파일은 함수 입니다. 함수 원형은 다음과 같더군요.
H=CIRCLE(CENTER,RADIUS,NOP,STYLE)
위 함수에서 CENTER 는 원의 중심을 의미하고, RADIUS 는 반지름, NOP 는 Number of Point 를 원을 그리고자 하는 점의 개수, STYLE 은 그릴 선의 스타일을 말합니다.
위 함수에서 저는 좀더 그래프가 정확하게 보이게 하기 위해 맨 뒤에 다음과 같은 코드 한 줄을 추가해서 사용합니다.
function H=circle(center,radius,NOP,style)
%---------------------------------------------------------------------------------------------
% H=CIRCLE(CENTER,RADIUS,NOP,STYLE)
% This routine draws a circle with center defined as
% a vector CENTER, radius as a scaler RADIS. NOP is
% the number of points on the circle. As to STYLE,
% use it the same way as you use the rountine PLOT.
% Since the handle of the object is returned, you
% use routine SET to get the best result.
%
% Usage Examples,
%
% circle([1,3],3,1000,':');
% circle([2,4],2,1000,'--');
%
% Zhenhai Wang <zhenhai@ieee.org>
% Version 1.00
% December, 2002
%---------------------------------------------------------------------------------------------
if (nargin <3),
error('Please see help for INPUT DATA.');
elseif (nargin==3)
style='b-';
end;
THETA=linspace(0,2*pi,NOP);
RHO=ones(1,NOP)*radius;
[X,Y] = pol2cart(THETA,RHO);
X=X+center(1);
Y=Y+center(2);
H=plot(X,Y,style);
axis square;
axis equal;
다운로드 받은 Circle() 함수를 사용하여 간단하게 원을 한번 그려 볼까요?
중점이 10,5 지점에 반지름 3,2,1 인 원 세 개를 그리는 예제 입니다.
circle([10,5],3,1000,'r');
hold on
circle([10,5],2,1000,'b--');
hold on
circle([10,5],1,1000,'g:');
다음과 같이 그래프가 나오죠.
circle.m파일을 열어서 코드를 확인해 보시면~ circle() 함수를 사용하면 정다각형도 그릴 수 있다는 것을 알 수 있을 겁니다.
간단하게 삼각형, 오각형, 팔각형 하나씩 그려보죠~
circle([10,5],3,4,'r');
hold on
circle([10,5],2,6,'b--');
hold on
circle([10,5],1,9,'g:');
위 코드를 보시면 유추해 볼 수 있겠지만~
그리고자 하는 다각형의 꼭지점의 수보다 1 만큼 크게 NOP 값을 설정해 주면 됩니다. 그래서 삼각형을 그릴 때 4 라는 수를 설정해 준겁니다.
위 코드를 돌려 보면 다음과 같이 삼각형, 오각형, 팔각형 그래프가 나옵니다.
결과적으로 Circle 함수를 사용하여 원을 그리는 것은 정다각형의 꼭지점의 개수(NOP)를 상대적으로 크게 늘려서 그리는 것이라는 것을 확인 할 수 있습니다.
다각형(polygon) 에 대한 정의는 아래 주소 참조바랍니다.
http://terms.naver.com/entry.nhn?docId=1078892&cid=40942&categoryId=32224
'programming language > MATLAB' 카테고리의 다른 글
구글 트랜드로 알아본 MATLAB의 관심도 (0) | 2014.05.04 |
---|---|
MATLAB 다각형 내부의 점들 찾기 inpolygon (8) | 2014.05.01 |
MATLAB Communication Systems Reference Curves (0) | 2014.04.29 |
MATLAB PSK(Phase-shift keying) BER simulation (13) | 2014.04.17 |
MATLAB sinc function (0) | 2014.04.08 |
MATLAB 16 QAM BER Simulation (8) | 2014.04.04 |
MATLAB sparse matrix(희소 행렬) (0) | 2014.02.19 |
MATLAB 프랙탈(Fractal) Dragon Curve (0) | 2014.01.16 |
댓글