免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
两圆相交,求交点坐标最近画钣金,遇到圆相交问题,参考了网上的程序,用圆的参数方程求,下了相关程序,竟然有些点计算错误,于是决定自己重写。第二种原理是解两圆方程(x-x0)2+(yy0)2=r02(x-x1)2+(yy1)2=r12太烦了这个二元二次方程,试了好久,没弄出结果来。第三种原理是如图不需解二元二次方程,两圆相交,圆心距o0o1是知道的,割线AB距离是可求的,AB和o0o1交点Q平分AB两条线互为垂直。QB2=Bo12-Qo1QB2=Bo02 -(o0o1-Bo1)2o0o1=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 DoubleDim intL As DoubleDim l0 As Double, l1 As Double, lh As DoubleDim center_x As Double, center_y As DoubleDim angl As DoubleDim x0 As Double, y0 As Double, x1 As Double, y1 As Doublex0 = 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 - l1lh = 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) Y_1 = CLng(center_y + lh) Else center_x = x1 + l1 center_y = y1 x_2 = CLng(center_x) y_2 = CLng(center_y - lh) X_1 = CLng(center_x) Y_1 = CLng(center_y + lh) End If Else 圆心no水平no垂直, k = (y1 - y0) / (x1 - x0) angl = Atn(k) If (x1 x0) Then center_x = x0 + l0 * Cos(angl) center_y = y0 + l0 * Sin(angl) Else center_x = x1 + l1 * Cos(angl) center_y = y1 + l1 * Sin(angl) End If x_2 = CLng(center_x + lh * Sin(angl) y_2 = CLng(cent
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-江西-江西工程测量员一级(高级技师)历年参考题库含答案详解3套试卷
- 血管瘤放射治疗
- 椎间盘突出康复流程
- 康复科理疗仪器介绍
- 自闭症康复教育小组课件
- 2026年配送路径数字化 系统实现运输里程科学降低
- 卫生巾健康知识
- 中国一汽翻译岗位前景
- 芜湖安全生产测绘讲解
- 2026及未来5年中国塑胶沙滩鞋数据监测研究报告
- 颈椎骨折脊髓损伤的护理
- 胃镜检查护理常规课件
- 2025至2030年中国果冻布丁产业竞争现状及投资策略研究报告
- DB4403-T 194-2021 物业服务要求 医院
- 2022版《英语课程标准》解读
- 大型钢结构厂房工程项目组织机构设置方案
- 双语工程图学第十三章(部编)课件
- SYT 0452-2012 石油天然气金属管道焊接工艺评定
- 医疗设备仪器的清洁消毒
- 管道闭水试验记录自动计算
- 内镜粘膜下剥离术(ESD)
评论
0/150
提交评论