国产探花免费观看_亚洲丰满少妇自慰呻吟_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復制內容到剪貼板
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成安县| 辛集市| 泸定县| 金秀| 汝阳县| 海门市| 新乡县| 靖远县| 扎兰屯市| 广平县| 宁安市| 西吉县| 峨山| 泰和县| 宜黄县| 团风县| 南澳县| 辽源市| 乌苏市| 梧州市| 峨眉山市| 胶州市| 衡水市| 宣恩县| 商河县| 喜德县| 堆龙德庆县| 思茅市| 宁城县| 许昌县| 浦江县| 嵊州市| 桦南县| 新宾| 河曲县| 本溪| 唐海县| 南平市| 南木林县| 宣城市| 西城区|