问候,
我们有一组点代表3d体和水平面的交点。我们想要检测代表身体横截面的2D形状。可以有一个或多个这样的形状。我们找到了讨论如何使用Hough变换对图像进行操作的文章,但是我们可能有数千个这样的点,因此转换为图像非常浪费。有更简单的方法吗?
谢谢
答案 0 :(得分:5)
在将3D模型转换为一组点时,您已丢弃了查找交点形状所需的信息。走一下3D模型的边 - 面连通图,按顺序找到边平面交点。
假设您拥有或可以构建三维模型地形(一些顶点,顶点之间的边,边缘边界):
你已经构建了一个与平面相交的有序边缘列表 - 按顺序线性插值每条边以按顺序找到形成交叉点形状的交点是微不足道的。请注意,此过程假定面多边形是凸的,在您的情况下它们是凸的。 如果您的体积是凹的,那么您将拥有多个离散的交叉形状,因此您需要重复此过程,直到检查完所有边。
有一些java代码可以执行此操作here,还有一个非常漂亮的测试应用程序here。
控制:
答案 1 :(得分:0)
当平面与凹面的某些顶点相交时,来自接受的答案的算法/代码不适用于复杂的特殊情况。在这种情况下" walking"边缘面连接图贪婪地可以在时间之前关闭一些多边形。
所发生的事情是,因为平面与顶点相交,所以在走图时的一个点上,下一个边有两种可能性,选择哪一个很重要。
一种可能的解决方案是实现图遍历算法(例如深度优先搜索),并选择包含起始边的最长循环。