cad.net bo边界算法

本来想重写一些cad的bo边界算法的,因为它的bo算法无法可以很好的将边界线给闭合...

而我最初的想法是通过遍历数据库来实现对边界识别的补充,

但是了解了bo算法思想之后,决定放弃...

因为桌子的bo算法是最佳实践来的..几乎没什么好改的....

桌子实现的方式是获取当前可视的图形,然后遍历所有的图元信息,而按照我最初的想法,我将不可避免的很多次数据库....

详情了解下面山人告诉我的bo算法思想...

【贵嫔】山人 2020/2/21 16:05:13

现在我全部交点打断,然后bo到的边界就是我标数字的线段组成的,对吧

 
【管理员】深圳-惊惊 2020/2/21 16:06:06
首先我用的是求交点函数,然后对这两条线求交?

【贵嫔】山人 2020/2/21 16:06:24
其实不打断也行  我是便于你理解 所以才打断的

然后,步骤如下 

1、从A点做0°直线(射线),与所有的线只有4个交点,就是我画绿色圆的点,选择一个离A点最近的点,并通过这个点得到1号直线 

2、得到1号直线的两个端点,选择相对AB线角度逆时针方向的点c,由c点做选择集,得到2号和1号直线,排除1号直线。然后用2号直线的另一个端点d做选择集,得到2号、3号,21、22号直线

然后高端的地方来了

3、这个时候,你要选择3号直线才是对的

那么算法为选择直线的角度更靠近逆时针的那个

也就是说d为基点,22号 在最右,21在中间,3在最左,那就选择最左的那个3

这时候的你轮廓集合里已经有3条直线了,分别为1 、2 、 3

然后就是不断的重复 直到走到12号线,又一次选择到了1号线 循环结束

这个是最简单的 没有内部孤岛  没有曲线 的bo原理

猜你喜欢

转载自www.cnblogs.com/JJBox/p/12571436.html