본문 바로가기
programming language/MATLAB

MATLAB 원(Circle), 다각형(Polygon) 그리기

by __observer__ 2014. 4. 9.
반응형

오늘은 간단하게 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



반응형

댓글