[英]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.