路徑方向與非零環(huán)繞原則
平時(shí)我們畫(huà)的圖形都是規(guī)規(guī)矩矩的,那么如果我們用線條畫(huà)了個(gè)抽象派作品,就像下面這圖一樣,童鞋們知道怎么用fill()染色呢?
這里就要用到數(shù)學(xué)上的一個(gè)方法——非零環(huán)繞原則,來(lái)判斷哪塊區(qū)域是里面,哪塊區(qū)域是外面。接下來(lái),我們具體來(lái)看下什么是非零環(huán)繞原則。
首先,我們得給圖形確定一條路徑,只要“一筆畫(huà)”并且“不走重復(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,在里面。沒(méi)錯(cuò),只要結(jié)果不為0,該射線所在的區(qū)域就在外面。
繪制圓環(huán)
記得arc方法嗎?它的最后一個(gè)參數(shù)就是判斷是路徑方向的,如果是路徑相反的兩個(gè)同心圓在一起,圖上色會(huì)有什么神奇的效果呢?
下面我們通過(guò)代碼來(lái)實(shí)現(xiàn)它。
新聞熱點(diǎn)
疑難解答
圖片精選