我有一组(x,y)值的数组,用于定义多边形。根据点的位置*铅笔大小绘制多边形。问题是我想绘制这种形状的边框,忽略内部顶点。看到这个例子,BLACK顶点是我感兴趣的,我想摆脱黄色顶点。
我想把X放在另一个数组中,顺时针方向排序。一直在考虑评估每个点,看看是否有一个邻居和哪里(北,南,东,西),但似乎太过苛刻检查每个顶点,我相信必须是另一个经过验证和更优雅的算法。
任何提示?
答案 0 :(得分:1)
通常,多边形由轮廓定义。这是你必须处理的一种不幸的格式。
如果它们像那样布局(在具有相同y坐标的行中),那么你可以先对数组进行排序,首先是x,然后是y,然后取第一个点,两个点围绕y的任何变化,以及形成你的大纲的最后一点。
如果事情的真实状况有点混乱,那么你可能想要研究'alpha形状'。一些链接:http://biogeometry.duke.edu/software/alphashapes/,http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/belair/alpha.html
答案 1 :(得分:1)
由于你的“点”只是小方块,听起来像你的内点(那些对形状边界没有贡献的点)就是那些(x-1,y)
,(x+1,y)
,{ {1}},(x,y-1)
也是所有积分。
您可以通过将所有点放在哈希表(或许多其他索引结构中的一个)中来快速完成该测试。
顺时针排序只需要走边界。如果有空洞,你必须决定你想做什么。
答案 2 :(得分:0)
制作精灵边框,在每个正方形上放置相同的位置,并在其后对oderlayout进行排序