找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 546|回复: 4

[LISP程序]:用几何方法求两圆交点的LISP程序

[复制链接]
发表于 2006-5-27 21:34:22 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:cirinter()
  2.   (setq pt1 (getpoint "/nfirst center:"))
  3.   (setq r1 (getreal "/nfirst radius:"))
  4.   (command "circle" pt1 r1)

  5.   (setq pt2 (getpoint "/nsecond center:"))
  6.   (setq r2 (getreal "/nsecond radius:"))
  7.   (command "circle" pt2 r2)

  8.   (setq d (distance pt1 pt2))
  9.   (setq a (* 2.0 r1 d)) (princ a)
  10.   (setq b (- (+ (* r1 r1) (* d d)) (* r2 r2)))
  11.   (setq c (sqrt (- (* a a) (* b b))))

  12.   
  13.   (setq ang1 (atan c a))
  14.   (setq ang2 (angle pt1 pt2))

  15.   (setq pt0 (polar pt1 (+ ang1 ang2) r1))

  16.   (command "line" pt0 pt1)
  17.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-27 23:16:29 | 显示全部楼层
两个圆的交点可能:
1。没有
2。一个交点
3。2个交点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-5-28 20:17:07 | 显示全部楼层
参考:
  1. [FONT=courier new];;;两圆交点
  2. (defun c:test068 (/ ena        enb e-a        e-b a b        c pt1 ptb ang ang-a ang-b pt1
  3.                   pt2 pta)
  4.   (CMDLA0)
  5.   (while (/= ena "CIRCLE")
  6.     (while (not (setq e-a (car (entsel "\n选择圆1 : ")))))
  7.     (setq ena (xyp-get-DXF 0 e-a))
  8.   )
  9.   (redraw e-a 3)
  10.   (while (/= enb "CIRCLE")
  11.     (while (not (setq e-b (car (entsel "\n选择圆2 : ")))))
  12.     (setq enb (xyp-get-DXF 0 e-b))
  13.   )
  14.   (redraw e-b 3)
  15.   (setq        tx1 (UKWORD 1 "1 2" "\n1-连线/2-示意" tx1)
  16.         a   (xyp-get-DXF 40 e-a)
  17.         b   (xyp-get-DXF 40 e-b)
  18.         pta (xyp-get-DXF 10 e-a)
  19.         ptb (xyp-get-DXF 10 e-b)
  20.         c   (abs (distance pta ptb))
  21.         ang (angle pta ptb)
  22.   )
  23.   (if (and (> (+ a b) c) (> (+ a c) b) (> (+ c b) a))
  24.     (progn
  25.       (setq ang-a (/ (- (+ (* b b) (* c c)) (* a a)) (* 2 b c))
  26.             ang-a (atan (sqrt (- 1 (* ang-a ang-a))) ang-a)
  27.             ang-b (/ (- (+ (* a a) (* c c)) (* b b)) (* 2 a c))
  28.             ang-b (atan (sqrt (- 1 (* ang-b ang-b))) ang-b)
  29.             ang-c (/ (- (+ (* b b) (* a a)) (* c c)) (* 2 b a))
  30.       )
  31.       (setq pt1        (inters        pta
  32.                         (polar pta (+ ang ang-b) 1000)
  33.                         ptb
  34.                         (polar ptb (- ang ang-a) 1000)
  35.                         nil
  36.                 )
  37.             pt2        (inters        pta
  38.                         (polar pta (- ang ang-b) 1000)
  39.                         ptb
  40.                         (polar ptb (+ ang ang-a) 1000)
  41.                         nil
  42.                 )
  43.       )
  44.       (if (= tx1 "1")
  45.         (command "line" pt1 pt2 "")
  46.         (grvecs (list 1 pt1 pt2))
  47.       )
  48.       (princ "\n交点1 = ")
  49.       (princ pt1)
  50.       (princ "\n交点2 = ")
  51.       (princ pt2)
  52.     )
  53.     (alert "\n两个圆不相交! ")
  54.   )
  55.   (redraw e-a 4)
  56.   (redraw e-b 4)
  57.   (CMDLA1)
  58. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 22:38 , Processed in 0.193310 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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