路徑方向與非零環繞原則
平時我們畫的圖形都是規規矩矩的,那么如果我們用線條畫了個抽象派作品,就像下面這圖一樣,童鞋們知道怎么用fill()染色呢?
這里就要用到數學上的一個方法——非零環繞原則,來判斷哪塊區域是里面,哪塊區域是外面。接下來,我們具體來看下什么是非零環繞原則。
首先,我們得給圖形確定一條路徑,只要“一筆畫”并且“不走重復路線”就可以了。如圖,標出的是其中的一種路徑方向。我們先假定路徑的正方向為1(其實為-1啥的也都可以,正負方向互為相反數,不是0就行),那么反方向就是其相反數-1。
然后,我們在子路徑切割的幾塊區域內的任意一點各取一條方向任意的射線,這里我只取了三個區域的射線為例,來判斷這三塊區域是“里面”還是“外面”。
接下來,我們就來判斷了。S1中引出的射線L1,與S1的子路徑的正方向相交,那么我們就給計數器+1,結果為+1,在外面。
S2中引出的射線L2,與兩條子路徑的正方向相交,計數器+2,結果為+2,在外面。
S3中引出的射線L3,與兩條子路徑相交,但是其中有一條的反方向,計數器+1-1,結果為0,在里面。沒錯,只要結果不為0,該射線所在的區域就在外面。
繪制圓環
記得arc方法嗎?它的最后一個參數就是判斷是路徑方向的,如果是路徑相反的兩個同心圓在一起,圖上色會有什么神奇的效果呢?
下面我們通過代碼來實現它。
JavaScript Code復制內容到剪貼板
學習交流
- 綠毒越獄軟件 完美越獄4.21教程12-21
- htcg15怎么刷機?htcg15刷機教程12-21
- HTC hd7刷安卓2.2全教程12-21
- mpkg軟件下載和卸載的方法12-21
- 網站后臺系統設置的網站地址格式寫法07-09
- 防止重復提交js按鈕變灰07-09
- 不同時間顯示不同的廣告代碼07-09
- iframe框架調用高度自適應方法07-09
- 備份數據庫出現問題的解決方法07-09
熱門圖片
猜你喜歡的新聞