[日記]如何將正方形以固定的比例分割
written by 薄荷文章🍃
起因是我想設計一個封面,其中重要的元素是要將正方形劃分成5:2的兩部份。之前想要繪製的時候,我覺得很難測量,也不知道如何劃分比較好看。近期突發奇想,讓程式幫我畫吧,於是就動手了。
事實上,最好有人能以肉眼分辨圖像是以5:2的比例分割的,畫得看起來合理不就好了。但這是個浪漫吧(強迫症?),因而把我推上了久違的數學之旅。
(目前的成果在這裡!以下是無聊的心路歷程)
先在邊上隨機選擇一個點,然後以該點作為端點畫出分割區域的直線。
原本的想法是,因為最終目標是固定的面積,有了起始點就有了上底,再算出下底要畫到哪就搞定了。為了觀察成果如何,我在起始點畫一個黑色的點,要分割出下底的地方再畫一個紅色的點。
然後就發現有些情況紅點顯示不出來。原來當上底太短時,下底所需的長度已經超過正方形的邊長。這種情況下就要換一種算法,紅點要畫在另一個邊上。
但是,又要怎麼知道該畫到哪裡呢?我先是打開Cursor問AI,但可能是我不會問,它還是採取跟我原先一樣的方法,於是無果。我想了好一陣子,想到的方法是把多出去的部分補回來。只要確定多出去的部分面積是多少,三角形的高又已經確定,我便能從中得出底的長度,也就知道紅點該畫在哪了。
正當寫完感到安逸時,跑著跑著又發現不對啊,有些情況面積比例明顯不對。才想到,補回來的時候,空白的區域的面積也被壓縮了。完蛋,那該怎麼辦啊?
我不知道有沒有更好的做法,只想得到最笨最直接的方法:真的去計算面積的比例吧。於是加了如下程式碼:
我自己都看得眼花撩亂。反正我的思路是,算出圖形超出去的情況下空白的部分,用總面積減去這部分得到方形內已被框起來的面積。用最終需要的面積(5/7個正方形)減去這個部分,得出還需要補上多少面積。在上面的草稿圖我將這部分畫成三角形,由於高是已知的,就用面積和高算出底是多少,得出端點要畫在哪。
原本預期這只涉及到簡單的數學──比例而已,會很簡單吧?結果我錯了。
也許有更好的作法……有嗎?反正土法煉鋼有效,我就土法煉鋼。不過好笑的是,我也不確定目前是否還有bug,可能如我開頭所說,肉眼就分辨不出來啊。
在這過程中體會到用程式碼處理數學的一個好處就是,再複雜的運算都不用擔心,丟給電腦跑就好了,我不必在面對各種不規整的數字時感到寸步難行。
最後,我是沒有想到做藝術還要用到數學。