2025年3月20日 星期四

Processing筆記_week05

 概要:這次的上課內容主要是複習week04的上課內容,用另一種方式來熟悉上禮拜的語法。


第1個程式碼利用數學公式繪製一個愛心,我們先開設一個300*300的視窗再利用兩層for迴圈繪製圖案,裡面需要加額外的條件去判斷什麼時候要上色,最後要記得Y軸座標要加負號,因為座標軸與數線上顛倒。

第1b個程式碼與前一個程式很像,只是這次我們利用translate把中心點改成(150,150),這樣座標的判斷會變得比較直觀一點,要記得for迴圈內的數值也需要做更動。
第2個程式碼是在介紹弧度與角度的差別,利用繪製36個圓形以及arc()函式繪製角度之間的差別。如果直接是數字的話,電腦會當作是弧度,要改成角度需要使用radians()函式。
第3個程式碼,利用atan2()函式觀察,圓形角度與弧度的差別,使用者移動滑鼠時,電腦會計算角度跟弧度,再利用text()把數值呈現在畫面上。
第3b的程式碼,與前面的程式碼很像,只是剛剛轉到180度時沒辦法呈現,原因是因為atan2()的範圍在-pi~pi之間,所以-pi沒辦法呈現。老師的寫法是如果數值為負數時就倒呈現出來,物極必反,我的方式是將負數的部分繼續當作整個圓的部分繼續呈現。
第4個程式碼,是在講解translate()、rotate()與繪製圖片的關係,呼叫繪製函式時,電腦會先計算當前所有的旋轉量,也就是原點現在在哪裡,再依此去做基準繪製圖案。
第5個程式碼,與第4個程式碼很像,只是rotate()與translate()的先後順序調換了,這樣會呈現兩種完全不同的效果,translate()在前面的話會有自轉的效果,rotate()先的話則是有公轉的效果由此可知,程式碼的先後順序有很大的差別。
第6個程式碼,我們在學習pushMatrix()與popMatrix(),利用比較的方式,我們知道在pushMatrix()與popMatrix()之間的旋轉與移動在pop之後都會消失。不然如果旋轉變量一直存在的話,再次旋轉會造成類似公轉的效果。

第7個程式碼,我們利用pushMatrix()和popMatrix(),來製作出很多個旋轉棒子,每個棒子在宣告時都會在一個新的Matrix裡面,所以彼此的旋轉都不會互相打擾。


沒有留言:

張貼留言