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

首頁(yè) > 開發(fā) > HTML5 > 正文

詳解HTML5 Canvas繪制不規(guī)則圖形時(shí)的非零環(huán)繞原則

2024-09-05 07:21:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

路徑方向與非零環(huán)繞原則
平時(shí)我們畫的圖形都是規(guī)規(guī)矩矩的,那么如果我們用線條畫了個(gè)抽象派作品,就像下面這圖一樣,童鞋們知道怎么用fill()染色呢?
2016321115025779.jpg (344×331)

這里就要用到數(shù)學(xué)上的一個(gè)方法——非零環(huán)繞原則,來(lái)判斷哪塊區(qū)域是里面,哪塊區(qū)域是外面。接下來(lái),我們具體來(lái)看下什么是非零環(huán)繞原則。
2016321115056981.jpg (540×332)

首先,我們得給圖形確定一條路徑,只要“一筆畫”并且“不走重復(fù)路線”就可以了。如圖,標(biāo)出的是其中的一種路徑方向。我們先假定路徑的正方向?yàn)?(其實(shí)為-1啥的也都可以,正負(fù)方向互為相反數(shù),不是0就行),那么反方向就是其相反數(shù)-1。
然后,我們?cè)谧勇窂角懈畹膸讐K區(qū)域內(nèi)的任意一點(diǎn)各取一條方向任意的射線,這里我只取了三個(gè)區(qū)域的射線為例,來(lái)判斷這三塊區(qū)域是“里面”還是“外面”。
接下來(lái),我們就來(lái)判斷了。S1中引出的射線L1,與S1的子路徑的正方向相交,那么我們就給計(jì)數(shù)器+1,結(jié)果為+1,在外面。
S2中引出的射線L2,與兩條子路徑的正方向相交,計(jì)數(shù)器+2,結(jié)果為+2,在外面。
S3中引出的射線L3,與兩條子路徑相交,但是其中有一條的反方向,計(jì)數(shù)器+1-1,結(jié)果為0,在里面。沒錯(cuò),只要結(jié)果不為0,該射線所在的區(qū)域就在外面。


繪制圓環(huán)
記得arc方法嗎?它的最后一個(gè)參數(shù)就是判斷是路徑方向的,如果是路徑相反的兩個(gè)同心圓在一起,圖上色會(huì)有什么神奇的效果呢?
2016321115120337.jpg (440×335)

下面我們通過(guò)代碼來(lái)實(shí)現(xiàn)它。

JavaScript Code復(fù)制內(nèi)容到剪貼板
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广宁县| 汽车| 岱山县| 娄烦县| 灵石县| 云龙县| 兴海县| 合作市| 新安县| 岑巩县| 伊春市| 舞阳县| 西乌| 阳高县| 西丰县| 兰西县| 平果县| 民勤县| 威远县| 乐陵市| 泸溪县| 邯郸市| 延津县| 龙口市| 铜川市| 恩施市| 稷山县| 平潭县| 苍溪县| 雷波县| 枣强县| 麻栗坡县| 嘉善县| 芦溪县| 金坛市| 英山县| 威海市| 灵台县| 英超| 亳州市| 三亚市|