天天看點

自制3D顯示引擎八:矩形視窗裁剪

自制3D顯示引擎八:矩形視窗裁剪

隻講原理,代碼需要自己構思、設計,這種算法隻有自己寫出來才能真正的記在腦子裡。

①:正方形區域為顯示區域,該三角形為經典的多次裁剪三角形。

三角形與顯示區域的相交情況有好幾種:三角形全部在顯示區域内、外,部分在顯示區域内;三角形的邊框并沒有和顯示框相交,卻有顯示部分。

網上也有一些相關的算法,但是總結的不是很正确,很清楚。

正确的方法是用每條邊界去裁剪三角形,留下的繼續裁剪。直到每條邊都去裁剪過。

順序無所謂。

在這裡需要判斷點在邊界的内外,很好處理。

裁剪的時候是一條邊一條邊的裁,兩端點一内一外時裁剪,外點由新點(此邊與邊界的交點)替換。此處需注意,裁剪後的形狀比之前的形狀多一條邊,就是多一個頂點,寫代碼的時候需仔細的設計代碼。

一個三角形被矩形裁剪完後,出現的形狀裡,邊數最多的為七邊形,7=3+4,預計生成的多邊形頂點數為源形狀的頂點數+4。

好了,理論講完了。

繼續閱讀