发布于 2007-07-19 20:00:09
0楼
找到方法了
设三点为P1(X1,Y1) P2(X2,Y2) P3(X3,Y3) 圆心为P0(X,Y)
利用三角形的外接圆方程:
(X-X1)^2+(Y-Y1)^2=(X-X2)^2+(Y-Y2)^2=(X-X3)^2+(Y-Y3)^2
推导出如下公式:
a=x1(y2-y3)+x2(y3-y1)+x3(y1-y2)
b=(x1^2+y1^2-x2^2-y2^2)/2
c=(x1^2+y1^2-x3^2-y3^2)/2
d=b(y1-y3)-c(y1-y2)
e=c(x1-x2)-b(x1-x3)
半径:r=SQRT((d/a-x1)^2+(e/a-y1)^2
圆心坐标:(d/a,e/a)
编制一个简单程序:
R11=$AA_IM[X]
R12=$AA_IM[Y]
M0
R21=$AA_IM[X]
R22=$AA_IM[Y]
M0
R31=$AA_IM[X]
R32=$AA_IM[Y]
R1=R11*(R22-R32)+R21*(R32-R12)+R31*(R12-R22)
IF R1==0 GOTO AAA
R2=(POT(R11)+POT(R12)-POT(R21)-POT(R22))/2
R3=(POT(R11)+POT(R12)-POT(R31)-POT(R32))/2
R4=R1*(R12-R32)-R3*(R12-R22)
R5=R3*(R11-R21)-R2*(R11-R31)
R97=SQRT(POT(R4/R1-R11)+POT(R5/R1-R12))
R98=R4/R1
R99=R5/R1
AAA:M2
R1为零时,说明三点一线,所以跳到程序结尾
R97为半径,R98为X坐标,R99为Y坐标
这个程序只是草草编的,没有完善
本人已经试过,很好用,而且很准的!!!!