matlab을이용한 원과 궤적이동
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