Google+ 機動學論壇(TALKING MECHANISMS)

2007年4月12日 星期四

上課情形不踴躍

最近同學上課不踴躍,本週約僅有廿位來上課,還有部份同學是遲到上課。很明顯地,上課有鬆馳的情形。本來希望有事不能來上課的同學能夠通知一聲,現在這個寄望會是落空的。由於本課程已決定不考試,僅用作業當成績。為恐僅由電腦提交作業來判斷成績產生偏差,故擬採取如下的新措施:
  • 請該週有來上課的同學,務必在每次提交作業之前作如下聲明:『我有參加本週上課』。沒有上課的則請勿填寫。
  • 每次作業中,有些參數之值會在後段變更,故後繳的同學必須依據改變後的數據作答。
  • 請同學充分利用本論壇的功能。
Read more!

2007年4月3日 星期二

第四次作業討論

有些同學繳交作業純屬急就章,所以作業內容常只有程式,未加說明,甚至連執行結果也付之闕如。上課時有同學要求僅繳交作業,不必考試,這當然可行。不過若有此認識,作業必須做的有模有樣,不要一味抄襲或變裝,對作業則不求甚解。這樣成績不但分不出高下,反而造就抄襲歪風。所以若要不考試,則每個人的作業要注重自己瞭解的程度,不會可以問人,直到自己完全體會,然後寫出自己的東西。不要僅憑一個程式作為答案就繳交出來,否則最終只是作業垃圾,沒有任何意義。下面有幾個重點大家請切記:

  1. 作業要自己作,不要拿別人抄襲或改裝,甚至央請別人替你上傳,這些都失去作業的本質,故請以考試的精神對待自己的作業,會的人可告訴他人怎麼做,而不是將自己的作業全部傳給別人,像張志鵬同學那樣(至少我在懷疑)。
  2. 寫出的程式自己必須完全瞭解其意義,並且加以說明及執行,所以程式的格調與寫法會因人而異,但不會像前面幾個作業產生千篇一律的情形,千萬不要提交未經執行過的程式。
  3. 寫出的程式要配合原來題目的旨意進行討論,或者改變參數,討論其結果變化,多討論為什麼及如何改以及可能的結果。
  4. 多用函數程式,少用script檔。前者可以利用輸入參數變換範圍也可以呼叫其他函數,也可以將其中呼叫的小函數放在主程式後面,共同執行,其彈性較大。
  5. 請多用自己的部落格發佈,多採用部落格之圖片上傳功能。上傳若採用其他軟體(如ACDSee),其他人觀看時還要下載該軟體,並不太適合,也浪費時間,請儘量不採用。有些同學仍然堅不使用部落格,不過在評分上會差很多的,可以自己酙酌。

茲以作業四第一題為例,解說如下:

考慮點:


  • 設正三角形邊長為L,則其原始座標可利用[0 0;L 0;L/2 sqrt(3)*L/2;0 0]表示,剛如構成三角形的一線畫。其原圖使用 patch指令為之,得到的結果如下:



  • 為使此三角形達到旋轉的目的必須利用座標旋轉的功能。由於必須循序以三個頂點為圓心旋轉。其公式如下:


  x'=xcos(theta)+ysin(theta)+x0
  y'=-xsin(theta)+ycos(theta)+y0

其中,(x,y)為原來之座標,(x'y')為經過迴轉theta角度後之座標;而(x0,y0)為迴轉的圓心,依序為三角形之三個頂點。然而為配合三角形每轉一圈後仍然回到原來位置,第一點為原點應無問題,第二點及第三點則其起點必須配合調整。迴轉點之座標可用apex表示,若配合其轉動時起點位置之不同,可使用switch case這個功能進行選擇,其值設為ss。

程式之內容如下:輸入參數為L與delt,分別為三角形之邊長與繪點之區隔角度。


function triangle_rot(L,delt)
% Inputs:
% L:length of the side of right triangle
% delt:interval angle for rotation, degrees
% Example: triangle_rot(10)
clf;
triangle=[0 0;L 0;L/2 sqrt(3)*L/2;0 0];%coordinates of triangle
apex=0;%index of origins
patch(triangle(:,1),triangle(:,2),'r');
h=line(triangle(:,1),triangle(:,2),'erasemode','xor');
axis equal;
axis([-L 2*L -L 2*L]);
ss=0;
while 1
apex=apex+1;
switch apex
case 1, ss=0;
case 2, ss=-120;
case 3, ss=120;
case 4, ss=0;apex=1;
end;%the origin of rotation
x0=triangle(apex,1);y0=triangle(apex,2);
for i=0:delt:360
s=ss+i;
ct=cosd(s);st=sind(s);
x=triangle(:,1)*ct+triangle(:,2)*st+x0;
y=-triangle(:,1)*st+triangle(:,2)*ct+y0;
set(h,'xdata',x,'ydata',y)
pause(0.01);
%drawnow
end
end



執行例:


>>triangle_rot(10,10)
(執行結果亦可利用動畫檔處理)

討論:


  • 當增加的角度變化時會有如何的結果?如何使其成為函數之輸入參數?
  • 當pause(t) 的時間改變時會有何種現象?

心得:


  • 由此例中得到的心得如何?可以學到什麼指令?
  • 有沒有可以改變撰寫的地方?如何做?
Read more!

2007年3月29日 星期四

第四次作業精華

張淳皓的第四次作業第一項係利用rotate這個指令的功能作迴轉,rotate的語法如下:


  rotate(h,[0 0 1],alpha,[x0 y0 z0])

h為圖之握把;[0 0 1]為轉軸,此表示沿Z軸旋轉;alpha為每次迴轉的角度;[x0 y0 z0]為轉動之圓心。其程式經過修改後如下:

% 學號b94611021
%三角形邊長31
axis equal
AXIS([-55 55 -35 60])
length=21+10
x=[length/2 0 -1*length/2 length/2]
y=[0 (3)^(1/2)*length/2 0 0]

%將三角形存於handle "pic"
patch(x',y','r')
pic=line(x',y','linewidth',2)
axis off;

%利用迴圈及rotate指令處理動畫旋轉
while 1
for n=1:120
rotate(pic,[0 0 1],3,[length/2 0 0])
pause(0.003)
end
for n=1:120
rotate(pic,[0 0 1],3,[0 (3)^(1/2)*length/2 0])
pause(0.003)
end
for n=1:120
rotate(pic,[0 0 1],3,[-1*length/2 0 0])
pause(0.003)
end
end


Read more!

2007年3月28日 星期三

繳交作業新措施

由於使用張貼意見繳交作業的過程存在一些技術性的困難,由第四週作業起,繳交方式變更如下:

  1. 每人均必須自行建立繳交作業用之部落格,不准共用;每人利用部落格將每週作業寫於部落格上,作業內容表現應力求完整及完美,需要圖片與連結時,應充分利用。
  2. 正式繳交時只需將文字及程式部份利用張貼意見的方式繳交,其內容不作任何連結,完全為一般文字,但此張貼之文字內容與部落格內容在期限前應維持相同,作為評分的標準。張貼時必須書寫姓名及學號。
  3. 繳交的過程中,仍要遵守以草稿存放,不得發佈,且於期限過後的第一天內記得重新發佈,以便評分。過期限而遲不發佈者,扣五分或以零分計。
  4. 成績計算以張貼之時間為準,並且嚴格執行,超過期限者以零分計算。若太過於接近期限(即10:00pm以後至12:00am)繳交時最後兩名每人之原成績扣十分;次三名接近之同學每人扣五分。
  5. 抄襲者以零分計,被抄襲者若因提早發佈或故意之原因扣五分。
  6. 部落格可建於任何平台上,但仍建議使用blogger.com,以便分類並統一發佈技術問題及相關作業。自己建立的部落格若尚未登載在機動學論壇中者,應在張貼時說明連結的位址,或來函說明。
  7. 先前的三次之作業,請自行放入部落格內。各人部落格中之作業於發佈後可以相互觀摩、張貼意見與討論。學期終了,將有各人部落格總評及參與張貼總評,這些分數將由部落格之整理,同學部落格之張貼及參與討論的次數決定。
Read more!

2007年3月26日 星期一

如何在自己的部落格加動畫

未來運動的型式會常常出現在機動學中,雖然利用Matlab執行時可以產生動畫,但若要將其置於部落格上則需要稍費週章。其中牽涉到幾個免費軟體的使用,其一是CamStudio。此程式置於http://www.camstudio.org/,下載後可以在螢幕中限制顯示區域,進行錄音存檔。

其次是到youtube.com網站中,自己設立帳號,將所得的檔案上載存在自己的帳號中。約過一刻鐘即可上載完畢。然後觀看無誤後,可將其embed之網址拷貝至自己的部落格中張貼(最好轉為Html模式)。經發佈後即可由部落格觀賞該動畫。

例如:一個迴轉的葉片
Read more!