明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5051|回复: 7

已知三点坐标,求外接圆半径与圆心坐标

[复制链接]
发表于 2005-2-18 16:33:00 | 显示全部楼层 |阅读模式
数控加工定位时用到,随便测内孔上三点坐标就可得出孔半径和圆心坐标


这个有点象坐标测量机测量用的


请大侠做成VBA格式


THANK!!
发表于 2005-2-23 08:36:00 | 显示全部楼层
Public Function GetCenOf3Pt(pt1 As Variant, pt2 As Variant, pt3 As Variant, _
ByRef radius As Double) As Variant

Dim xysm, xyse, xy As Double
Dim ptCen(2) As Double

xy = pt1(0) ^ 2 + pt1(1) ^ 2
xyse = xy - pt3(0) ^ 2 - pt3(1) ^ 2
xysm = xy - pt2(0) ^ 2 - pt2(1) ^ 2
xy = (pt1(0) - pt2(0)) * (pt1(1) - pt3(1)) - (pt1(0) - pt3(0)) * (pt1(1) - pt2(1))

'判断参数有效性
If Abs(xy) < 0.000001 Then
MsgBox "所输入的参数无法创建圆形!"
Exit Function
End If

'获得圆心和半径
ptCen(0) = (xysm * (pt1(1) - pt3(1)) - xyse * (pt1(1) - pt2(1))) / (2 * xy)
ptCen(1) = (xyse * (pt1(0) - pt2(0)) - xysm * (pt1(0) - pt3(0))) / (2 * xy)
ptCen(2) = 0
radius = Sqr((pt1(0) - ptCen(0)) * (pt1(0) - ptCen(0)) + (pt1(1) - ptCen(1)) * (pt1(1) - ptCen(1)))

If radius < 0.000001 Then
MsgBox "半径过小!"
Exit Function
End If

'函数返回圆心的位置,而半径则在参数中通过引用方式返回
GetCenOf3Pt = ptCen
End Function
回复 支持 1 反对 0

使用道具 举报

发表于 2005-2-18 18:47:00 | 显示全部楼层
这样来可以搞掂吧:


        先在这三个点画出弧 再取出圆心和半径.


(COMMAND ".ARC" 第一点 第二点 第三点)


        (SETQ S-ARC(ENTLAST));选到刚画的弧


(SETQ ARC-DXF (ENTGET S-ARC)); 弧的DXF组码


(SETQ ARC-CENTER (CDR (ASSOC 10 ARC-DXF)));圆心点提取


(SETQ RADIUS (CDR (ASSOC 40 ARC-DXF))); 半径提取
 楼主| 发表于 2005-2-19 10:47:00 | 显示全部楼层
我想这样,在输入三个点的座标后能自动计算出圆心座标及其半径





       


THANK!!老大

本帖子中包含更多资源

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

x
发表于 2005-2-20 08:48:00 | 显示全部楼层
; 编程: 包达勇
; 日期: 2004-11-08
; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心
; 用法 (setq ARC-CR(B:GET-ARCenter-Radius <起点> <中点> <终点>))
; 返回值 ( <半径> <圆心点> )
(defun B:GET-ARCenter-Radius (SP MP EP / ARC-CENTER ARC-CP ARC-RADIUS BD-1 BD-2 BF-1 BF-2)
(setq bd-1 (polar SP (angle SP MP) (* 0.5 (DISTANCE SP MP)))
bd-2 (polar EP (angle EP MP) (* 0.5 (DISTANCE EP MP)))
bf-1 (polar bd-1 (+ (* 0.5 pi)(angle SP MP)) 10.0)
bf-2 (polar bd-2 (+ (* 0.5 pi)(angle EP MP)) 10.0)
ARC-Center (inters bd-1 bf-1 bd-2 bf-2 NIL)
ARC-Radius (DISTANCE MP ARC-CP))
(list ARC-Radius ARC-Center ))
 楼主| 发表于 2005-2-22 15:46:00 | 显示全部楼层
不好意思我看不懂LISP


只会VBA
发表于 2005-3-11 15:58:00 | 显示全部楼层
写成EXE可以么?
发表于 2022-6-12 11:43:23 | 显示全部楼层
本帖最后由 434939575 于 2022-6-12 12:33 编辑
BDYCAD 发表于 2005-2-20 08:48
; 编程: 包达勇; 日期: 2004-11-08; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心; 用法                                         (setq AR ...
感谢版主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 14:10 , Processed in 0.224361 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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