多线段几何图形—— 简单几何图形(布尔运算)

如上图:

已知两个多边形(A,B,C,D)(E,F,G,H,I),如何求出图形(F,K,C,J)?

1.求出数据中的所有线段,线段没有重合区域,除了线段端点也不会和任何线段相交(如上图新增交点J,K,如DC线段,变成DJ,JC线段)

2.搜索多线段中的封闭区域 ,搜索到四个区域(A,B,K,F,J,D)(F,K,C,J) (K,G,H,I,E,J,C) (A,B,K,G,H,I,E,J,D)

3.获取在这四个区域内的点


(1) 图形交集

如果这四个区域内的一点,在图形(A,B,C,D)的内部,且在(E,F,G,H,I)的内部,则这个点对应的区域是交集部分。(判断一个点是否在多边形的内部


(2)图形并集

如果两个原始区域内的一点,同时在求得区域的内部,则这个区域是并集结果。


并集有一个特殊情况。那就是有一个图形出现在另外一个图形的内部。这个时候的并集应该包含图形,

可使用 点是否在区域内判断,判断一个图形的点是否都在另外一个图形的内部。


(3)图形差集

如果求的区域内的一点,不在减去图形内部,同时减去图形内的一点,不能在这个区域的内部,那么这个区域就是差集的结果。


差集也有一个特殊情况,图形完全处于另外一个图形的内部


可使用一下方式解决(假设FEG为减去图形)

1.求得FEG的一个内部点H

2.以这个点作垂线,切割图形(A,B,C,D)得到两个新图形(A,B,K,J),(J,K,C,D)

3.然后新得到的两个图形在进行布尔运算差集。

4.合并两个图形布尔运算差集的结果,这个结果就是整个图形的布尔运算差集。








猜你喜欢

转载自blog.csdn.net/keng_s/article/details/70820187
今日推荐