[英]Triangulation of concave polygon using Triangle library
我使用的是Triangle庫的C ++包裝器,無法擺脫多邊形之外的三角形。
這是我想要得到的:
這是我對Triangle的了解:
(我故意不填充三角形以顯示多邊形之外有一些三角形)
我嘗試使用射線投射算法消除外部三角形(查找三角形邊緣的中心並查看其是否在多邊形中。如果至少一個不存在,則不要繪制該三角形),但是對於我而言,它的速度非常慢(多邊形每幀更新一次)。 我錯過了什么? 我應該將哪些參數傳遞給Triangle以對凹面進行三角剖分?
如果無法用Triangle做我想做的事,有人可以建議我一種繪制多邊形的快速方法(我的程序使用Qt Quick Scene Graph,並且我只能按照OpenGL的要求僅在三角形或凸多邊形中繪制)? 目前,我想嘗試使用GLU的細分方法並使用模板緩沖區進行繪制。 我也打算嘗試這個圖書館 。
至少有兩種繪制普通凹面的方法:
應用三角剖分算法。 這就是您一直在嘗試的方法。 關於該主題的文獻應該很多,也許您可以使用源代碼。
使用模板緩沖區。 我對這些較早出現的問題的回答就說明了這一點: 塗黑多邊形 外的所有內容 , 如何強制openGL繪制非凸填充多邊形 。
但是,如果只需要繪制示例中使用的半月型形狀,而不是任意的凹多邊形,則這似乎比所需的復雜得多。 您可以輕松地構建一個三角形條來表示此形狀。
您當前的半月可能是用看起來像這樣的頂點序列渲染的,該頂點序列按(凹形)多邊形所需的順序定義了頂點:
0 9
17 10
1 16 11 8
15 12
2 14 13 7
3 6
4 5
您可以通過對頂點進行不同的排序來直接使用基本類型GL_TRIANGLE_STRIP
渲染此形狀,以使底部弧的頂點與頂部弧的頂點交替:
0 17
2 16
1 4 14 15
6 12
3 8 10 13
5 11
7 9
GLU鑲嵌消除了該問題。 它顯示出高性能和良好的三角剖分質量,並且可以在我的筆記本電腦和Android平板電腦Nexus 7上正常運行。您可以在此處找到自包含的GLU libtess版本。
您可以通過命中測試來嘗試隱藏的位圖,但是它僅在輸出中起作用。 我這樣做是為了繪制等高線圖: https : //cntm.codeplex.com/ 。 或者,您可以嘗試使用Alpha形狀。 定義為去除超過alpha的邊緣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.