找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2708|回复: 20

[LISP程序]:请问怎么求一个点到另两点形成直线的距离

[复制链接]
发表于 2004-5-26 18:48:56 | 显示全部楼层 |阅读模式

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

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

×
请问怎么求一个点到另两点形成直线的距离

如图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-26 20:17:55 | 显示全部楼层
思路:三点坐标已知,可算出其面积,又知已知边长,s=a*h/2      ---->      h=2s/a (a为已知边长,h就是你要求的距离,s为三点所构成三角形面积)  明白了没?不知道对你有没有用处!!自己试着去搞一搞!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-26 20:43:20 | 显示全部楼层
这样太麻烦,数据多的话速度会很慢,有没有更简单的办法呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-26 21:04:38 | 显示全部楼层
最初由 小狼 发布
[B]这样太麻烦,数据多的话速度会很慢,有没有更简单的办法呢? [/B]

怎么都不舍得搜索呢?唉。

p1 p2 直线上点,p3 外部点

方法一:

  1. (setq ang (angle p1 p2)
  2.          ang1 (+ ang (/ pi 2))
  3. )
  4. (setq p (inters p1 p2 p3 (polar p3 ang1 1.) nil)


方法二:求点到空间直线的的垂点,在lisp论坛找(空间直线方程)

方法三:
点到直线的垂点

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

使用道具 举报

发表于 2004-5-27 11:36:24 | 显示全部楼层
其实利用面积数据也应该不多吧,我认为不会慢!!!
(command "area" pt1 pt2 pt3)
(setq h (* (/ (getvar "area") (dictsance pt1 pt2)) 2))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-27 17:50:05 | 显示全部楼层
(setq p (vlax-curve-getClosestPointTo e p3))
方法我找到了,可惜如果是连续的Pline线的话就不能满足我只要求两点形成的线,我只要3个点的,太多了判断容易出错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-27 18:52:42 | 显示全部楼层
6楼楼主说:   

其实利用面积数据也应该不多吧,我认为不会慢!!!
(command "area" pt1 pt2 pt3)
(setq h (* (/ (getvar "area") (dictsance pt1 pt2)) 2))  


其中dictsance 应为distance(返回两点见距离),千万别搞错了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-27 18:58:04 | 显示全部楼层
谢谢楼上的,因为是直接写的没有试用过,居然打错了都不知道。
再次感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-5-29 10:09:14 | 显示全部楼层
你看看我在6楼发的代码
直接点输入三点就能的到面积了呀。
写完整了就是:

选择3个点,求出的是第一个点到第二第三点所在直线的垂直距离。

  1.   

  2. [FONT=courier new]
  3. (defun c:3dj()
  4.   (setq pt1 (getpoint)
  5.         pt2 (getpoint)
  6.         pt3 (getpoint))
  7.   (command "area" pt1 pt2 pt3 "")
  8.   (setq h (* (/ (getvar "area") (distance pt2 pt3)) 2))
  9.   h
  10.   )   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-29 10:27:43 | 显示全部楼层
最初由 小狼 发布
[B]只要距离,不需要别的, [/B]

用方法一:

  1. ;;p0 直线外点 p1 p2 直线点
  2. (defun d2p (p0 p1 p2 / p ang)
  3.   (setq        ang (angle p1 p2)
  4.         p   (inters p0 (polar p0 (+ ang (/ pi 2)) 1.) p1 p2 nil)
  5.   )
  6.   (distance p0 p)
  7. )

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 07:19 , Processed in 0.208407 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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