两圆相交求交点坐标.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
两圆相交求交点坐标

两圆相交,求交点坐标 最近画钣金,遇到圆相交问题,参考了网上的程序,用圆的参数方程求,下了相关程序,竟然有些点计算错误,于是决定自己重写。 第二种原理是解两圆方程 (x-x0)^2+(yy0)^2=r0^2 (x-x1)^2+(yy1)^2=r1^2 太烦了这个二元二次方程,试了好久,没弄出结果来。 第三种原理是如图 不需解二元二次方程,两圆相交,圆心距o0o1是知道的,割线AB距离是可求的,AB和o0o1交点Q平分AB两条线互为垂直。 QB^2=Bo1^2-Qo1 QB^2=Bo0^2 -(o0o1-Bo1)^2 o0o1=Qo0+Qo1 可解出QB、QA、Qo0、Qo1。 知道了圆心o0、o1坐标,可解出Q坐标,从而知道A、B坐标,问题求解完毕。 这种方法应该是较好的,原理简单,结果正确。就用第三种方法。 发现AUTOCAD内嵌了VBA,画图嘛用AUTOCAD最好了,还能编程,就用AUTOCAD2008 贴几张效果图、并把相交函数贴上,因为整个VBA贴上太不方便了。 参数: circle_circle 功能:两圆相交,求交点坐标 参数xx0 ,yy0 ,r0 第一个圆的圆心坐标,半径 参数xx1 ,yy1 ,r1 第二个圆的圆心坐标,半径 X_1 ,Y_1; x_2 y_2返回两个交点坐标 相切情况以后加,因为我画钣金相切情况没有 Sub circle_circle(ByVal xx0 As Long, ByVal yy0 As Long, ByVal r0 As Double, ByVal xx1 As Long, ByVal yy1 As Long, ByVal r1 As Double, ByRef X_1 As Long, ByRef Y_1 As Long, ByRef x_2 As Long, ByRef y_2 As Long) Dim k As Double, k1 As Double Dim intL As Double Dim l0 As Double, l1 As Double, lh As Double Dim center_x As Double, center_y As Double Dim angl As Double Dim x0 As Double, y0 As Double, x1 As Double, y1 As Double x0 = CDbl(xx0) y0 = CDbl(yy0) x1 = CDbl(xx1) y1 = CDbl(yy1) intL = Sqr(Pow(y1 - y0, 2) + Pow(x1 - x0, 2)) l1 = (Pow(r0, 2) - Pow(r1, 2) - Pow(intL, 2)) / (-2 * intL) l0 = intL - l1 lh = Sqr(Pow(r1, 2) - Pow(l1, 2)) Ys=KK*double(Xs-X0)+double(Y0); If (xx1 = xx0) Then 圆心垂直,交点水平对称 angl = 90 If (y1 y0) Then center_x = x0 center_y = y0 + l0 x_2 = CLng(center_x - lh) y_2 = CLng(center_y) X_1 = CLng(center_x + lh) Y_1 = CLng(center_y) Else center_x = x0 center_y = y1 + l1 x_2 = CLng(center_x - lh) y_2 = CLng(center_y) X_1 = CLng(center_x + lh) Y_1 = CLng(center_y) End If ElseIf (yy1 = yy0) Then 圆心水平,交点垂直对称 If (x1 x0) Then center_x = x0 + l0 center_y = y0 x_2 = CLng(center_x) y_2 = CLng(center_y - lh) X_1 = CLng(center_x)

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档