其他分享
首页 > 其他分享> > CodeGo.net>如何结合多面体?

CodeGo.net>如何结合多面体?

作者:互联网

假设我有2个多面体,在空间上部分重叠.每一个都由连接的多边形列表定义,而多边形又由线段列表定义(由2个点定义).是否有一种简单的算法来创建多面体,这些多面体是这些多面体边界的并集,但会删除所有内部部分?

同样,在此之后,我将实现减法和交集方法.

我正在为这个开源库做贡献.源代码:
https://bitbucket.org/Clearspan/geometry-class-library/src/34a2ab5031879d051abb855a828368e397b4f5b6/GeometryClassLibrary/Solids/Polyhedron.cs?at=master

解决方法:

关于这个主题有很多文献.参见例如an optimal algorithm for intersecting three dimensional convex polyhedra.

允许使用非凸多面体会使事情变得更加困难.将您的对象分割成凸形,然后尝试找到相交可能是一个主意.

与其将这些面视为点和线,不如将它们视为平面会更容易.您可以轻松找到飞机的交点.

您问是否有一个简单的算法.答案可能是否定的.有算法,但要考虑许多极端情况:如果两个多面体在同一点相遇会怎样?还存在效率问题.天真的方法会使每个面孔彼此相交.使算法为O(n ^ 2).如果多面体具有数百或数千个面,这将严重缩放,这在建模中很常见.

标签:visual-studio-2013,polyhedra,c,math,geometry-class-library
来源: https://codeday.me/bug/20191120/2042942.html