明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3405|回复: 19

[已解答] 请教老师们,如何求得两多段线间的间距并画圆

[复制链接]
发表于 2014-4-23 17:12 | 显示全部楼层 |阅读模式
请教各位老师~
有没有什么方法或函数可以实现在两条闭合的多段线间点击求得两线间的间距并画圆~




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

思路:我觉得应该从点的位置,画条垂线,取与线的交点画圆。这样准确无误。  发表于 2014-4-25 09:25
发表于 2014-4-23 17:47 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-4-23 22:02 编辑

图上所有pt1都是自己在它附近点取的,然后计算出pt1后画出的圆?
如果是这样的话,有个问题是你的两条线它并不平行,要计算在你所点击的点附近计算一个与两条线相切的圆很麻烦
计算pt到pl1,pl2的最近距离点p1,p2
计算延长p1pt到pl2的交点p21,延长p2pt到pl1的交点p11
现在可以计算出最距离了及圆心位置了
分别计算p1,p11和p2,p22的中点o1,o2, 线段o1o2的长度为过pt点的这两长线的距离,圆心o为o1,o2的中点
最后以o到其中一条线的最近距离作为半径绘圆
但是这样它并不严密,估计那个圆并不能同时与两条多线段相切,那个距离应该也不对

如果直接取得过p1和p2的子线段作出它的角平分线,求P1pt到角平分线的交点用为圆心,可以和两条多线段相切,但对于多线段上点很多的情况或者是有凸度的情况显然也不适合

希望高手们给出正确答案吧
 楼主| 发表于 2014-4-23 21:24 | 显示全部楼层
llsheng_73 发表于 2014-4-23 17:47
图上所有pt1都是自己在它附近点取的,然后计算出pt1后画出的圆?
如果是这样的话,有个问题是你的两条线它 ...

llsheng_73老师,我的想法是想点击PT1后获取离PT1点最近的线的最近垂直点然后再垂直到另一条线上,求出两线的间距取(/ 间距 2)为圆中心!这样的想法能实现吗?

评分

参与人数 1明经币 +1 收起 理由
llsheng_73 + 1 没事给我加分做什么

查看全部评分

发表于 2014-4-23 21:37 | 显示全部楼层
个人观点(不考虑凸度):
1、求出所有圆心的轨迹(可依次求出角平分线或中线,相交后连成线);(这是重点和难点)
2、点取的点就近转化到轨迹上即可。
发表于 2014-4-23 21:53 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-4-23 22:10 编辑
陈亚娣 发表于 2014-4-23 21:24
llsheng_73老师,我的想法是想点击PT1后获取离PT1点最近的线的最近垂直点然后再垂直到另一条线上,求出两 ...


很多问题上我都不是老师,这个问题同样
你的想法很容易实现,但那个圆一般情况下会与一条线相切而与另一条线相交(除非它们平行)

如果两条多线段子线段象第三个圆那处的情况,可以通过我上边说的方法计算出来,其实只需要计算出角平分线的方向a,过p1点作出与平分线垂直的线段,它与两条多线段的交点所组成的线段就是距离,用其中点作为圆心,圆心到线段的距离就是半径
如果平行可以通过你的方法计算

但是可能很多时候会象右下角那个位置一样或者有凸度,那这些方法通通没用了,因为与其圆相关的不再是两个直线段,这就会很麻烦,可能需要把两个多线段各取一部分出来组成一个封闭的多线段,求它的最大内接圆,至于这个两条多线段是取多长,我觉得就取点到两条多线段的垂线段的1.5倍差不多了,(太大了可能后边求出的内接圆离点取的点太远,如果太小可能圆不会与这两条多线段相切而与连接子线段的两个边线相切),至于这个内接圆的求法可以参考那介飞得很高的神鸟的帖子
多边形的最大内接圆
http://bbs.mjtd.com/forum.php?mo ... &fromuid=202795

但这样求出的圆,它的圆心多数情况下会偏离过pt1的距离线段,总之你这个问题对于我来说绝对是个难题



评分

参与人数 1明经币 +1 收起 理由
陈亚娣 + 1 谢谢llsheng_73老师热心解答

查看全部评分

发表于 2014-4-23 22:57 | 显示全部楼层
大概是这样:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
陈亚娣 + 1 很给力!

查看全部评分

发表于 2014-4-24 14:54 | 显示全部楼层
xyp1964 发表于 2014-4-23 22:57
大概是这样:



有可能碰到这种情况哦,相切3线,你演示的是相切2条线.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-4-24 15:03 | 显示全部楼层
本帖最后由 liu22737 于 2014-4-24 15:16 编辑
kwok 发表于 2014-4-24 14:54
有可能碰到这种情况哦,相切3线,你演示的是相切2条线.

  这也太难了啊!
楼主要求没讲清楚啊,是要两线间最大圆吗?
 楼主| 发表于 2014-4-24 16:56 | 显示全部楼层
tengte 发表于 2014-4-23 21:37
个人观点(不考虑凸度):
1、求出所有圆心的轨迹(可依次求出角平分线或中线,相交后连成线);(这是重点 ...

圆心的轨迹?两条线的中心线吗?
 楼主| 发表于 2014-4-24 16:57 | 显示全部楼层
liu22737 发表于 2014-4-24 15:03
这也太难了啊!
楼主要求没讲清楚啊,是要两线间最大圆吗?

可能我画的图表达力不足,在这里表示歉意~多段线是无规则的
我的想法是想在两条多段线间点击PT1后获取离PT1点最近的线的最近垂直点然后再垂直到另一条线上,然后计算所点击的位置两线段间的间距!这样的想法能实现吗?undefined(我是测绘方面的工作者,有这样设想是想在不用手工选取两条线计算两条线的间距的前提下,实现点击的位置计算两条线的间距,设想用在等高线高程添加和不规则线两等分或在两线间内插等分线段这些地方)

评分

参与人数 1明经币 +1 收起 理由
llsheng_73 + 1 测绘的人不少,但测绘玩lisp的太少,这个想.

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 07:27 , Processed in 0.511469 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表