wholin 发表于 2006-10-26 19:40:00

自身相相交的多段线如何得出交点所在点

<P>一个不规则的多段线,比较窄的地方可能在做的过程中可能一不小心做成了相交的,最后想在图形检查时能查出来,自身有相交的就标出相交点?</P>
<P>要实现这样的功能,该要用到那些原理和知识点,请大家帮助</P>

offloading 发表于 2009-1-15 16:22:00

同上

cctv2cctv 发表于 2009-1-19 04:59:00

本帖最后由 作者 于 2009-1-22 5:18:53 编辑 <br /><br /> <p>参考,先把多段线依据节分解成n条,各条线用IntersectWith是否相交得出交点</p>

offloading 发表于 2009-1-19 13:59:00

本帖最后由 作者 于 2009-1-19 13:59:05 编辑 <br /><br /> <p>楼上的意思是要炸开图元,再一个一个比较吗?</p><p>这样会不会很慢!</p><p>有没有更好的方法,例如函数,可直接对一个多段线判断!</p><p>如方便,给个代码吧,我测试一下!</p><p>感谢!</p>

cctv2cctv 发表于 2009-1-20 04:51:00

本帖最后由 作者 于 2009-1-22 5:24:56 编辑 <br /><br /> <p>画一条与原来一完全一样的多段线,坐标也一样(copy一条更方法些吧)</p><p>两条多段线用IntersectWith相交,得到的交点坐标与多段线的节点坐标依次比较(数组进行比较),有一个数字不相同,就说明有自交情况</p><p>最后把刚copy那条删了 </p>

cctv2cctv 发表于 2009-1-20 05:03:00

<p><strong><font face="Verdana" color="#61b713">offloading&nbsp; wholin</font></strong></p><p>方法可行的话汇报一下</p>

offloading 发表于 2009-1-21 10:06:00

本帖最后由 作者 于 2009-1-21 10:24:46 编辑 <br /><br /> <p>试了一下,未达到所需效果,交点还是原来的交点,未测出所需数据!</p><p>可能是表达和理解上有所差异!</p><p>如图:</p><p>左图使用用你的方法,可求出A点交差;(4根线组成)</p><p>右图使用你的方法,无法求出A点异常,因此图本身在A点就设有断点,用你的方法无法比对出不同点!(6根线组成)</p>

cctv2cctv 发表于 2009-1-22 04:48:00

本帖最后由 作者 于 2009-1-22 5:20:06 编辑 <br /><br /> <p>内容空</p>

cctv2cctv 发表于 2009-1-22 04:52:00

本帖最后由 作者 于 2009-1-22 5:51:25 编辑

以下是引用offloading在2009-1-21 10:06:00的发言:试了一下,未达到所需效果,交点还是原来的交点,未测出所需数据!可能是表达和理解上有所差异!如图:左图使用用你的方法,可求出A点交差;(4根线组成)右图使用你的方法,无法求出A点异常,因此图本身在A点就设有断点,用你的方法无法比对出不同点!(6根线组成)offioading请用5楼的方法检测一条多段线自身是否相交的情况,这种方法更快,更方便

你所提到的的问题应该是用了3楼的方法吧,参考3楼的方法A点处原本就是节点的话,是检测不出来的,
但是实际CAD操作画一条多段线自交点(自以跟自已相交的交点)与自身的节点相重合百万分之一的可能性都没有(除非故意的),要知道cad上的点类型double
顺便说一下"A点就设有断点"修改成"A点就设有节点",这句话让我想半个小时(费解歧意),断点和节点(或顶点)是不概念,一条多段线是没有断点的,有断点的肯定不只一条多段线
页: [1]
查看完整版本: 自身相相交的多段线如何得出交点所在点