国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 巫山县| 东安县| 玉树县| 上虞市| 宾川县| 金塔县| 化隆| 新兴县| 汝阳县| 石景山区| 涪陵区| 江都市| 高州市| 镇安县| 饶河县| 泌阳县| 资源县| 从化市| 绥江县| 周宁县| 临湘市| 固始县| 依安县| 子长县| 通城县| 平泉县| 改则县| 濉溪县| 海原县| 宜丰县| 汉阴县| 昭通市| 喜德县| 天台县| 永新县| 新巴尔虎左旗| 香港| 保亭| 都匀市| 炉霍县| 卢湾区|