2011年3月18日 星期五

小時候的奇思 玩具尺 月球軌跡 統一發票 軌跡圖

來寫一篇好玩的東西好了,小時候有一種玩具尺,尺裡面有兩個大洞和幾個大小不同的齒輪,齒輪上面有幾個小孔,每個孔都離圓心不同距離,把齒輪放進玩具尺的大洞裡,與大洞裡的齒嵌住,把筆插在齒輪上的小孔,順著尺輪的方向畫就能畫出一些有趣的圖,後來用A4紙仔細的畫了一張像這樣的圖,


一直留到現在,最近清理東西,想說紙都快爛了,都還沒驗證過我想的到底對不對,就用Matlab寫寫看,程式碼如下:


R= ;
r= ;
s= ;
r1=[0:0.005:pi*30];
r0=-r1*R/r;
X=s*cos(r0)+(R-r)*cos(r1);
Y=s*sin(r0)+(R-r)*sin(r1);
plot(X,Y);

就這樣,很簡單,可以拿來幹嘛呢?
如果把r0和r1關係的地方改成正的,
r0=r1*R/r;
然後隨便畫畫...


我試過用實際值,就是地球離太陽R=1.5億+38萬(公里),地球離月球s=38萬公里,r隨便設,r=40萬,結果就是一個很圓的圓,看不出形狀。

然後我試著把R寫很大,r相對小,s更小,就有點像是月球繞太陽的軌道了(但其實不是,因為這裡r0和r1的關係是-R/r,月亮這個值不知道是多少),綠色的是地球軌道,藍色是月球...



如果把程式寫成這樣,
R=10;
r=6.5;
s=9;
r1=[0:0.005:pi*30];
r0=-r1*R/r;
X=s*cos(r0)+(R-r)*cos(r1);
Y=s*sin(r0)+(R-r)*sin(r1);
Xout=r*cos(r0)+(R-r)*cos(r1);
Yout=r*sin(r0)+(R-r)*sin(r1);
plot(X,Y,Xout,Yout);

看起來就像統一發票上面那個,

最後,其實R,r,s的大小關係不用固定,r也可以比R大,然後程式裡是畫15個圈,也就是30pi,可以畫更多或更少,挺好玩的,像下面這個圖,

反正可以亂改,像下面這樣,有興趣的自己玩吧...

沒有留言: