我试图统一实现多边形裁剪器/种植者。我基本上有2个多边形,1个我要剪辑(它总是凸起),另一个我想剪辑(有时凸有时凹)。它必须在3D中工作。
我有一个想法,它是这样的:
我知道凸多边形的边和顶点,我知道凸/凹对象的边和顶点。
1)找到凸/凹多边形内的凸多边形的所有边和顶点。
2)找出凸多边形内的凹/凸多边形的所有边和顶点
3)找出凸面和凹面/凸面多边形之间的交叉边。
4)计算交点
5)使用交叉点和凸/凹多边形顶点和凸面对象内的边缘将凸面对象重新创建出来的任何东西
6)使用相同的点延伸凸/凹多边形。忽略凸/凹多边形内的顶点和边。
但我遇到的问题是我不知道如何做最初的3个步骤。我可能会有一些重叠的四叉树(3D中的octtree),也许我可以使用它。
我提出的任何建议,想法和错误?
编辑
经过多次思考后,我可以看到我可以简化需要做的事情。
有3种情况:1)凸面完全凸/凹 2)凸面与凸面/凹面相交 3)没有交集
所以为了我的目的,我只需要联盟和减法。首先,我做2个形状的联合。然后从第一个形状我减去第二个形状。然后我得到了我需要的部分。减法相当简单。我只需要找到两个形状中都不存在的所有顶点。这些顶点定义了我需要的部分。
我研究了构造实体几何,但我能找到的就是你能用它做什么,而不是如何实现它。有人能指点我某个页面或快速回顾一下如何进行CSG UNION操作吗?