jackgan 发表于 2005-2-18 16:33

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

数控加工定位时用到,随便测内孔上三点坐标就可得出孔半径和圆心坐标


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


请大侠做成VBA格式


THANK!!

PS122 发表于 2005-2-23 08:36

Public Function GetCenOf3Pt(pt1 As Variant, pt2 As Variant, pt3 As Variant, _<BR>                       ByRef radius As Double) As Variant<BR>                       <BR>                       Dim xysm, xyse, xy As Double<BR>                       Dim ptCen(2) As Double<BR>                       <BR>                       xy = pt1(0) ^ 2 + pt1(1) ^ 2<BR>                       xyse = xy - pt3(0) ^ 2 - pt3(1) ^ 2<BR>                       xysm = xy - pt2(0) ^ 2 - pt2(1) ^ 2<BR>                       xy = (pt1(0) - pt2(0)) * (pt1(1) - pt3(1)) - (pt1(0) - pt3(0)) * (pt1(1) - pt2(1))<BR>                       <BR>                       '判断参数有效性<BR>                       If Abs(xy) &lt; 0.000001 Then<BR>                                                       MsgBox "所输入的参数无法创建圆形!"<BR>                                                       Exit Function<BR>                       End If<BR>                       <BR>                       '获得圆心和半径<BR>                       ptCen(0) = (xysm * (pt1(1) - pt3(1)) - xyse * (pt1(1) - pt2(1))) / (2 * xy)<BR>                       ptCen(1) = (xyse * (pt1(0) - pt2(0)) - xysm * (pt1(0) - pt3(0))) / (2 * xy)<BR>                       ptCen(2) = 0<BR>                       radius = Sqr((pt1(0) - ptCen(0)) * (pt1(0) - ptCen(0)) + (pt1(1) - ptCen(1)) * (pt1(1) - ptCen(1)))<BR>                       <BR>                       If radius &lt; 0.000001 Then<BR>                                                       MsgBox "半径过小!"<BR>                                                       Exit Function<BR>                       End If<BR>                       <BR>                       '函数返回圆心的位置,而半径则在参数中通过引用方式返回<BR>                       GetCenOf3Pt = ptCen<BR>End Function

BDYCAD 发表于 2005-2-18 18:47

这样来可以搞掂吧:


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


(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))); 半径提取

jackgan 发表于 2005-2-19 10:47

我想这样,在输入三个点的座标后能自动计算出圆心座标及其半径





       


THANK!!老大

BDYCAD 发表于 2005-2-20 08:48

; 编程: 包达勇<BR>; 日期: 2004-11-08<BR>; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心<BR>; 用法                                       (setq ARC-CR(B:GET-ARCenter-Radius &lt;起点&gt; &lt;中点&gt; &lt;终点&gt;))<BR>; 返回值                               ( &lt;半径&gt;       &lt;圆心点&gt; )<BR>(defun B:GET-ARCenter-Radius (SP MP EP / ARC-CENTER ARC-CP ARC-RADIUS BD-1 BD-2 BF-1 BF-2)<BR>       (setq bd-1 (polar SP (angle SP MP) (* 0.5 (DISTANCE SP MP)))<BR>        bd-2 (polar EP (angle EP MP) (* 0.5 (DISTANCE EP MP)))<BR>        bf-1 (polar bd-1 (+ (* 0.5 pi)(angle SP MP)) 10.0)<BR>        bf-2 (polar bd-2 (+ (* 0.5 pi)(angle EP MP)) 10.0)<BR>        ARC-Center (inters bd-1 bf-1 bd-2 bf-2 NIL)<BR>        ARC-Radius (DISTANCE MP ARC-CP))<BR>       (list ARC-Radius ARC-Center ))

jackgan 发表于 2005-2-22 15:46

不好意思我看不懂LISP


只会VBA

noyesnono 发表于 2005-3-11 15:58

写成EXE可以么?

434939575 发表于 2022-6-12 11:43

本帖最后由 434939575 于 2022-6-12 12:33 编辑

BDYCAD 发表于 2005-2-20 08:48
; 编程: 包达勇; 日期: 2004-11-08; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心; 用法                                       (setq AR ...感谢版主分享
页: [1]
查看完整版本: 已知三点坐标,求外接圆半径与圆心坐标