找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1357|回复: 5

[求助]:如何确定点到直线距离

[复制链接]
发表于 2006-5-6 16:33:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
已知直线上的两点坐标,另一点(直线外)由用户输入,请问,据此如何确定点到直线距离
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-6 17:26:04 | 显示全部楼层
通过AcDbCurve::getClosestPointTo函数求点到曲线(包括直线)的最近点,然后求两点间的距离
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 22:14:01 | 显示全部楼层
点到直线的垂直距离也如此计算吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-7 08:06:39 | 显示全部楼层
求点到直线(非线段)的垂足点的函数
//获取垂直点
AcGePoint3d WJRedGeFun::GetOrthPt(AcGePoint3d pt0, AcGePoint3d pt1, AcGePoint3d pt2)
{
  AcGePoint3d pt;
  //第一种情况,与X轴平行
  double dis;
  if(pt1.y>pt2.y)
    dis=pt1.y-pt2.y;
  else
    dis=pt2.y-pt1.y;
  if(dis<0.01)
  {
    pt.x=pt0.x;
    pt.y=pt1.y;
    return pt;
  }
  //第二种情况,与Y轴平行
  if(pt1.x>pt2.x)
    dis=pt1.x-pt2.x;
  else
    dis=pt2.x-pt1.x;
  if(dis<0.01)
  {
    pt.x=pt1.x;
    pt.y=pt0.y;
    return pt;
  }
  //第三种情况,与XY轴均不平行
  double k,x,y;
  k=(pt2.y-pt1.y)/(pt2.x-pt1.x);
  x=(k*k*pt1.x+k*(pt0.y-pt1.y)+pt0.x)/(k*k+1);
  y=k*(x-pt1.x)+pt1.y;
  pt.x=x;
  pt.y=y;
  return pt;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-7 11:27:06 | 显示全部楼层
非常感谢。
我最近下载了晓东工具箱,想根据lsp程序原理试做ARX程序,但有一事不明,请指教。
(defun $xdlsp_txtbrk (e pt / e0 e1 p10 le le0 le1 p1 px a a1 d d1 dx dm i i1
                        txt txt1 cha tfhz tf pos
                     )
  (xdrx_setenttodb e)
  (if (= "TEXT" (xdrx_getentdxf 0))
    (progn
      (setq _pi2 (/ pi 2)
            le0 (entget e)
            e1 (assoc 1 le0)
            txt (cdr e1)
            p10 (assoc 10 le0)
            p1 (cdr p10)
            a (cdr (assoc 50 le0))
            a1 (+ a _pi2)
            px (trans pt 1 0)
            dx (xdrx_p2ldist px p1 (polar p1 a1 1e3[/COLOR]))\\此句中的1e3是代表哪一点的距离呢?
      )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-3 16:20:38 | 显示全部楼层
设直线上两点坐标为P(x1,y1,z1),Q(x2,y2,z2),直线外一点为S(x0,y0,z0)
令向量a={x2-x1,y2-y1,z2-z1},,向量b={x0-x1,y0-y1,z0-z1},则点S到直线距离
   |a×b|
d=--------------
      |a|
其中×为向量叉积
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 14:33 , Processed in 0.321168 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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