恭喜,你发布的帖子
发布于 2021-08-01 19:34:47
3楼
R1=第1点X坐标
R2=第1点Y坐标
R3=第2点X坐标
R4=第2点Y坐标
R5=第3点X坐标
R6=第3点Y坐标
R91=R1-R3
R92=R2-R4
R93=R1-R5
R94=R2-R6
R95=((POT(R1)-POT(R3))-(POT(R4)-POT(R2)))/2
R96=((POT(R1)-POT(R5))-(POT(R6)-POT(R2)))/2
R97=-((R94*R95-R92*R96)/(R92*R93-R91*R94)) ;圆心X坐标
R98=-((R91*R96-R93*R95)/(R92*R93-R91*R94)) ;圆心Y坐标
R99=SQRT(POT(R1-R97)+POT(R2-R98)) ;半径
下面是个验证程序
R11=464.765 ;圆心X坐标
R12=755.356 ;圆心Y坐标
R13=863.34 ;圆半径
R14=1 ;圆上第1点角度
R15=2 ;圆上第2点角度
R16=3 ;圆上第3点角度
R1=R11+R13*COS(R14) ;圆上第1点X坐标
R2=R12+R13*SIN(R14) ;圆上第1点Y坐标
R3=R11+R13*COS(R15) ;圆上第2点X坐标
R4=R12+R13*SIN(R15) ;圆上第2点Y坐标
R5=R11+R13*COS(R16) ;圆上第3点X坐标
R6=R12+R13*SIN(R16) ;圆上第3点Y坐标
IF (R1==R3)OR(R1==R5)OR(R3==R5)OR(R2==R4)OR(R2==R6)OR(R4==R6) ;假如三点中有任意两点在水平或垂直方向相同
IF ((R1==R3)AND(R3==R5))OR((R2==R4)AND(R4==R6)) GOTO ERROR01 ;假如三点都在水平或垂直方向上跳跃到提示信息
ELSE
IF ((R4-R2)/(R3-R1))==((R6-R2)/(R5-R1)) GOTO ERROR01 ;假如三点在任意一条斜线上跳跃到提示信息
ENDIF
R91=R1-R3
R92=R2-R4
R93=R1-R5
R94=R2-R6
R95=((POT(R1)-POT(R3))-(POT(R4)-POT(R2)))/2
R96=((POT(R1)-POT(R5))-(POT(R6)-POT(R2)))/2
R97=-((R94*R95-R92*R96)/(R92*R93-R91*R94)) ;计算出圆心X坐标,应和R11相同
R98=-((R91*R96-R93*R95)/(R92*R93-R91*R94)) ;计算出圆心Y坐标,应和R12相同
R99=SQRT(POT(R1-R97)+POT(R2-R98)) ;计算出圆半径,应和R13相同
MSG("圆心X坐标R97="<<R97<<",圆心Y坐标R98="<<R98<<",半径R99="<<R99)
M0
M30
ERROR01:
MSG("三点在一条直线上")
M0
M30
请填写推广理由:
分享
只看
楼主