소프트웨어/MATLAB

matlab을이용한 원과 궤적이동

cs만두 2012. 4. 12. 15:04

 

count=0;

px=[0 7*pi 7*pi  0];

py=[0  0    -2   -2];

for t=0 : 0.1 :6*pi

    i=0 : 0.01: 2*pi;

    r=1;

    ox=r*cos(i);

    oy=r*sin(i)+1;

    movx=ox+t;

    movy=oy;

   

    lx=r*(t-sin(t));

    ly=r*(1-cos(t));

    tmpx(count+1)=lx;

    tmpy(count+1)=ly;

   

    clf;

    fill(px, py,'r');

    for j= 1: count+1

    line(tmpx(j),tmpy(j))

       

    end

    line(lx,ly)

    line([t,lx],[1,ly],'Color','r','Marker','o')

   

    line(movx,movy)   

    axis([0 7*pi 0 1.5])

    axis equal

    pause(0.00000000001)

    count=count+1;

 

   

   

   

end

 

 

원과 그 위의 점의 궤적을 그리는 그래프입니다.

궤적은 밑의 식을 썼습니다.

r*(t-sin(t));

r*(1-cos(t));

 

 

이 소스에서 주의할점은

 

clf나 cla를쓰면 공은 이동하는모습이 보이지만 점의 궤적도 함께 없어져버린다는 점입니다.

 

그래서

 

for문의 한 주기마다 이전까지의 궤적을 저장시켜서 함께 찍어줬습니다.

 

예를들어

1을찍고

clf

1 2

clf

1 2 3

clf

1 2 3 ...

 

이런식으로 매 for문마다 처음~바로 직전의 궤적까지를 불러와서 line을 쓰는식으로 했습니다.

lx=r*(t-sin(t));

ly=r*(1-cos(t));

tmpx(count+1)=lx;

tmpy(count+1)=ly;

clf;

fill(px, py,'r');

for j= 1: count+1

line(tmpx(j),tmpy(j))

end