找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6545|回复: 8

[求助] [求助]:点到直线的最近距离(垂直问题)!

[复制链接]
发表于 2006-6-27 08:28:18 | 显示全部楼层 |阅读模式

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

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

×
目的:
求一点与一条直线的最近距离(即:从这一个点向一条直线画垂直线)。

说明:
我以前看到过,不记得是在论坛还是在CAD的帮助里面。但是我现在比较急着用,而我又要上班。

刚在论坛用“垂直”搜索了一下,没找到。所以不得已请大家帮我找下。

我记得的,好像仅仅是一个函数就可以了。

急!请大家帮帮忙,谢谢了。

(绝非有意灌水!请版主明鉴!)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-27 09:37:02 | 显示全部楼层
如果你仅仅是画垂线,完全可以用捕捉垂点呀,而且可以测量这个垂线长度。
如果用程序可以这样做:
1 根据这个点和直线的转90度的斜率,找到在这个斜率上的另一个点(polar)
2 求出这两个点和原直线的交点(inters)
3 测量两点间距(distance)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-27 10:46:49 | 显示全部楼层
可能是我自己没讲清楚,其实我要的结果是非常简单的。

真实目的: 在插入一个块的时候,“从”“块的插入点”“到
”“一条已知直线”作出一条垂直线。当然,这些都是靠“LSP程序”在“后台”来完成,而不是由自己用手去作出来。

我记得我看到过一个函数,好像就可以达到我这个目的,只是忘了在哪里看到的了。现在又要上班,都没什么时候来逛论坛了。所以,还是请大家帮我想下那个函数啊!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-27 12:04:06 | 显示全部楼层
二楼的老兄写的相当详细了,三个关键函数也列出来了
你组合一下就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 25个

财富等级: 恭喜发财

发表于 2006-6-28 12:43:10 | 显示全部楼层
方法一、
dpl(p,p1,p2)

确定点 p 到直线(通过点 p1 和 p2)的最短距离。

方法二、
distance pt (vlax-curve-getclosestpointto line pt)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-7-1 18:46:17 | 显示全部楼层
如果单求距离只要用三角形面积:[开方(s*(s-a)*(s-b)*(s-c))]/边长.
如果要求出点给个函数:
[php]
;;点在直线的投影  三点都2d or 3d点返回2d or 3d点
(defun prj-p->p1p2 (p p1 p2 / l1 k1 k2 k)
  (setq    l1 (mapcar '- p2 p1)
    k1 (apply '+ (mapcar '* (mapcar '- p p1) l1))
    k2 (apply '+ (mapcar '* l1 l1))
    k  (/ k1 k2)
  )
  (mapcar '+ (mapcar '* (list k k k) l1) p1)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-7-2 11:33:31 | 显示全部楼层
到函数库里去找,有的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 444个

财富等级: 日进斗金

发表于 2014-6-18 17:17:31 | 显示全部楼层
  1. (Car (Trans (MapCar '- Pt SP) 0 (MapCar '- EP SP)))

Pt :已知点
SP:直线的起点
EP:直线的终点
返回值为+时,表示在线段的上方,为-时表示在线段的下方。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 06:24 , Processed in 0.429514 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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