明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2990|回复: 7

关于两圆求交点?

[复制链接]
发表于 2006-1-8 21:29:00 | 显示全部楼层 |阅读模式

求教:关于两圆求交点?
如何用VLIP编程求任意两圆的交点?
一个初学者!

 

发表于 2006-1-8 22:08:00 | 显示全部楼层

;;ptc:圆心坐标,rad:半径

(defun int_circle (ptc1 rad1 ptc2 rad2 / dst d pt1 pt2 alpha beta)
  (setq dst (distance ptc1 ptc2)
        alpha (angle ptc2 ptc1)
        d (/ (+ rad1 dst rad2) 2.0)
  )
  (cond
    ;;; Circles are tangent
    ((or (equal dst (+ rad1 rad2) 0.0001)
         (equal dst (abs (- rad1 rad2)) 0.0001)
     )
      (setq pt1 (polar ptc2 alpha rad2)  pt2 pt1)
    )
    ;;; Circles do not intersect
    ((or (> dst (+ rad1 rad2))
         (if (> rad2 rad1) (< (+ rad1 dst) rad2) (< (+ rad2 dst) rad1))
     )
      (setq pt1 nil  pt2 nil)
    )
    (T
      (setq beta (* 2.0 (atan (sqrt (abs (/ (* (- d dst) (- d rad2))
                                            (* d (- d rad1))))))
                 )
            pt1 (polar ptc2 (- alpha beta) rad2)
            pt2 (polar ptc2 (+ alpha beta) rad2)
      )
    )
  )

  (list pt1 pt2)

)

发表于 2006-1-9 03:18:00 | 显示全部楼层
hao
 楼主| 发表于 2006-2-14 21:58:00 | 显示全部楼层

非常感谢原地踏步的回帖

谢谢!

发贴心情

发表于 2006-2-15 21:13:00 | 显示全部楼层
  1. (load "xyp_lib.vlx") ;版本 V.20060210
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib")
  5. ■2·在每个程序内增加(load"xyp_lib")
  6. ■3·在command下,输入(load"xyp_lib")
  7. ■4·在菜单.mnl中增加(load"xyp_lib")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554[/url]
  11. |;
  12. (defun c:test ()
  13.   (setq s1 (car (USEL 0 "CIRCLE" "圆"))
  14. s2 (car (USEL 0 "CIRCLE" "圆"))
  15. pt (xyp-get-Inters s1 s2 0)
  16.   )
  17.   pt
  18. )
发表于 2006-2-16 11:13:00 | 显示全部楼层
xyp1964版大的程序好简捷哦,关键部分都被你藏起来了。
发表于 2006-2-16 20:04:00 | 显示全部楼层

IntersectWith 方法

获取对象与图形中其它对象的相交点。

参阅 | 示例

语法

RetVal = object.IntersectWith(IntersectObject, ExtendOption)

Object

所有图形对象 (除了 Pviewport 和 PolygonMesh)
使用该方法的对象或对象集合。

IntersectObject

Object[对象], 为输入项;
对象可以是 所有图形对象中的任一个。

ExtendOption

AcExtendOption 常数; 为输入项
该选项指定两个对象中是否没有、单个或两个对象延伸来得到交点。

acExtendNone

两个对象均不延伸。

acExtendThisEntity

延伸基本对象。

acExtendOtherEntity

延伸作为参数传递的对象。

acExtendBoth

延伸两个对象。

RetVal

Variant[变体] (双精度数组)
点数组为图形中对象与其它对象相交的点数组。

说明

如果两个对象不相交,则没有返回数据。用户可以要求一个或两个对象延伸相交来产生相交点。例如,在以下例图中,线1为该方法调用的基本对象,而线3作为参照传递给该方法。如果 ExtendOption 传递的是 acExtendThisEntity,则点A将作为线1在延伸后与线3相交的点返回 。如果 ExtendOption 为 acExtendOtherEntity,则不会返回数据,因为即使线3延伸了,它也与线1没有相交。

如果相交类型为 acExtendBothEntities 并且线2作为参数图元传递,则返回点B。如果 ExtendOption 为 acExtendNone 并且线2为参数图元,则无数据返回。

 


发表于 2006-2-17 07:46:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-22 05:17 , Processed in 0.257868 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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