[英]Finding Edges and Vertices Within Heightmap Array
可以說,我已經產生了高度圖陣列,其中為了簡單起見,將只具有在其內3個高度值: 0
, 1
,和2
。 例如,它可能看起來像這樣:
000000111111110000000000000000000000000000000000
001111111111111111000000000001111111111111000000
000011111111111111100000000000000011122111110000
000000000111111100000000000000000111221110000000
000000000000000000000000000001111122222111111100
000000000000000000000000111111111111111111000000
000000000000000000000111111111100000000000001111
000000000001111111111110000000000000000001111111
000000001111222222211100000000000000000000001110
000000000011112221100000000000000011111000000000
000000000000111111100000000000001111111110000000
000000001111111110000000000000000011111000000000
000000000000000000000000000000000000000000000000
我想做的是在此高度圖中找到“頂點”,並以邏輯順序輸出它們(因此我可以畫一條線到達每個連續點,最終將跟蹤形狀的輪廓)。 例如,對於第一“的組” 1
S IN右上角:
000000111111110000000 .1------2
001111111111111111000 8-' `--3
000011111111111111100 --> `7---. .4
000000000111111100000 6-----5'
000000000000000000000
第二張圖中的數字是我需要查找的坐標(以正確的順序),點和破折號是我從每個點開始跟蹤以獲取形狀輪廓的線。
我可以使用某種算法來找到這些頂點嗎? 如果沒有,找到它們的最有效方法是什么?
我目前正在做的事情是使用遞歸來找到數字的每個“島”或“組”,然后以該形狀的所有外點為頂點。 但是,我的方法相當慢,並且頂點的順序不正確。
感謝您的幫助,我希望這一切都有意義。
編輯:我從評論中意識到,使用頂點會使我失去某些形狀的區域。 我認為,除了頂點以外,我需要找到的是形狀邊緣上的所有點,但順序正確。 所以我的例子應該是:
000000111111110000000 12345678
001111111111111111000 17 9,10
000011111111111111100 --> 16,15 11
000000000111111100000 14,13,12
000000000000000000000
對困惑感到抱歉。
您可以嘗試使用Alpha形狀。 Alpha形狀定義為不超過Alpha的邊的Delaunay三角剖分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.