你好,
我们有一组点代表 3d body 和水平面的交点。我们想检测代表 body 横截面的 2D 形状。可以有一种或多种这样的形状。我们找到了讨论如何使用霍夫变换对图像进行操作的文章,但是我们可能有数千个这样的点,因此转换为图像非常浪费。有没有更简单的方法来做到这一点?
谢谢
最佳答案
在将您的 3D 模型转换为一组点时,您已经丢弃了查找相交形状所需的信息。遍历 3D 模型的边-面连接图以按顺序查找边-平面交点。
假设您拥有或可以构建 3d 模型地形(一定数量的顶点、顶点之间的边、边所包围的面):
您已经构建了一个与平面相交的边的有序列表 - 对每条边进行线性插值以按顺序找到形成相交形状的相交点是微不足道的。请注意,此过程假定面多边形是凸的,在您的情况下它们是凸的。
如果您的体积是凹的,您将有多个离散的相交形状,因此您需要重复此过程,直到检查完所有边缘。
有一些 java 代码可以做到这一点 here ,以及一个相当漂亮的测试应用程序 here .
控制:
关于geometry - 检测任意形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646738/