签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
西门子840D 已知空间三点怎么编程求圆心半径?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1707595&b_id=20&s_id=0&num=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
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("三点在一条直线上")
如果需要自动取圆心,那就要通过含数做子程序。
可以参考一下我的这个帖:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1707733&b_id=20&s_id=106&pno=0
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录