Greetings,检测任意形状
我们有一组点代表3D物体与水平面的交点。我们希望检测代表身体横截面的2D形状。可以有一个或多个这样的形状。我们发现,讨论如何利用Hough变换图像进行操作的文章,但我们可能有成千上万这样的点,所以转换成图像是非常浪费的。有没有更简单的方法来做到这一点?
谢谢
Greetings,检测任意形状
我们有一组点代表3D物体与水平面的交点。我们希望检测代表身体横截面的2D形状。可以有一个或多个这样的形状。我们发现,讨论如何利用Hough变换图像进行操作的文章,但我们可能有成千上万这样的点,所以转换成图像是非常浪费的。有没有更简单的方法来做到这一点?
谢谢
在您的3D模型转换为一组点,你已经扔掉找到交集的形状所需的信息。步行3D模型的边缘连通图,按顺序查找边缘平面交点。
假设你有,或可以构建,3D模型地形(一些数目的顶点的,由边缘结合的顶点,面之间的边缘):
你已经建立了交叉的平面边缘的有序列表 - 这是微不足道的线性插值每个边找到交叉点,从而,形成了路口形状。请注意,这个过程假定脸部多边形是凸面的,这是你的情况。 如果卷是凹的,你将有多个分立路口形状,所以你需要,直至所有边缘都被检查,重复这个过程。
有做这个here一些Java代码,以及一个相当漂亮的测试应用here。
控制:
从接受答案的算法/代码不复杂的特殊情况下工作,当平面相交的凹面的一些顶点。在这种情况下“走”边面的连接图贪婪可能时间之前关闭一些多边形。
会发生什么情况是,因为平面与顶点相交,所以在走图的一个点上,下一个边有两种可能性,并且选择哪一个是重要的。
一种可能的解决方案是实现一个图的遍历算法(例如深度优先搜索),并选择其中包含起始边缘的最长循环。
你说的是任何类型的三维形状,还是有一些应用或特定领域的限制? – 2011-01-10 12:32:24