回复:西门子840D 已知空间三点怎么编程求圆心半径?

已锁定

右边

  • 帖子

    91
  • 精华

    1
  • 被关注

    7

论坛等级:侠士

注册时间:2013-06-05

黄金 黄金 如何晋级?

发布于 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


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25498条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。