国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

詳解HTML5 Canvas繪制不規則圖形時的非零環繞原則

2024-08-26 00:18:39
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了HTML5 Canvas繪制不規則圖形時的非零環繞原則,文中列舉了圓環及鏤空剪紙效果的編寫示例,需要的朋友可以參考下
 
 

路徑方向與非零環繞原則
平時我們畫的圖形都是規規矩矩的,那么如果我們用線條畫了個抽象派作品,就像下面這圖一樣,童鞋們知道怎么用fill()染色呢?
HTML5,Canvas

這里就要用到數學上的一個方法——非零環繞原則,來判斷哪塊區域是里面,哪塊區域是外面。接下來,我們具體來看下什么是非零環繞原則。
HTML5,Canvas

首先,我們得給圖形確定一條路徑,只要“一筆畫”并且“不走重復路線”就可以了。如圖,標出的是其中的一種路徑方向。我們先假定路徑的正方向為1(其實為-1啥的也都可以,正負方向互為相反數,不是0就行),那么反方向就是其相反數-1。
然后,我們在子路徑切割的幾塊區域內的任意一點各取一條方向任意的射線,這里我只取了三個區域的射線為例,來判斷這三塊區域是“里面”還是“外面”。
接下來,我們就來判斷了。S1中引出的射線L1,與S1的子路徑的正方向相交,那么我們就給計數器+1,結果為+1,在外面。
S2中引出的射線L2,與兩條子路徑的正方向相交,計數器+2,結果為+2,在外面。
S3中引出的射線L3,與兩條子路徑相交,但是其中有一條的反方向,計數器+1-1,結果為0,在里面。沒錯,只要結果不為0,該射線所在的區域就在外面。


繪制圓環
記得arc方法嗎?它的最后一個參數就是判斷是路徑方向的,如果是路徑相反的兩個同心圓在一起,圖上色會有什么神奇的效果呢?
HTML5,Canvas

下面我們通過代碼來實現它。

JavaScript Code復制內容到剪貼板
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仙居县| 光泽县| 龙泉市| 锡林浩特市| 永德县| 中山市| 拜城县| 车致| 兴海县| 赤壁市| 抚松县| 合山市| 大丰市| 十堰市| 宁都县| 修武县| 新化县| 彭州市| 邢台县| 亳州市| 达孜县| 建水县| 石屏县| 徐闻县| 泗水县| 宕昌县| 滨海县| 河源市| 湾仔区| 鄂托克前旗| 望都县| 迁西县| 大同市| 和平区| 安西县| 昭平县| 五寨县| 丰城市| 汪清县| 炎陵县| 织金县|