寻边器碰圆上三点找圆心方法再探

2014-04-16 04:58河南中光学集团有限公司南阳473006胡飞嘉
金属加工(冷加工) 2014年12期
关键词:个点数组点数

河南中光学集团有限公司 (南阳 473006) 胡飞嘉

《金属加工 (冷加工)》2013年第8期机床自动化栏目刊登了《用寻边器快速找正圆孔中心》一文,文中提出了用寻边器碰圆上三点通过编程来确定圆心的方法。这是一个相当实用的方法,尤其在找正大圆和非整圆等打表不便的情况下更具优势。

这一方法的思路是先用寻边器碰圆上的三点,把这3个点的机械坐标值读入6个变量中。文中是读入到R1~R6这6个变量中,R1、R2分别表示第一点的X、Y坐标,其余变量含义类推。由于三点能确定一个圆,根据已知的3个点的坐标就可以计算出圆心坐标。为了计算圆心坐标,原文用了两个很复杂的计算式。这其实是把简单问题复杂化了。因为西门子840D系统 (不限于840D)已经自带了根据三点计算圆心的函数,没有必要再编程计算了。这个函数就是CALCDAT。它不仅能计算出圆心坐标,还能计算出圆的半径。这个函数的格式是:

CALCDAT(<原始坐标数组>,<点数>,<结果数组>)

<原始坐标数组>是一个3×2的二维数组,存放的是圆上的3个点的坐标。

<点数>是指圆上的点数 (只能取3或4)。本例是碰圆上三点,应取3。

<结果数组>是变量参数,用于存放计算结果。这个参数是一个有3个元素的一维数组,前两个数表示三点所在的圆的圆心X、Y坐标,第三个数表示圆的半径。

这个函数有一个布尔型的返回值,表示是否计算成功 (只要三点不在一条直线上,通常都能计算成功)。

使用这个函数,原文中的LD3程序可以非常简单。程序如下:

DEF REAL PT[3,2],RES[3];定义两个数组 (PT存放原始数据,RES存放结果)

PT [0,0] =SET(R1,R2,R3,R4,R5,R6);圆上三点坐标赋值给PT数组,用于CALCDAT计算

IF CALCDAT(PT,3,RES);计算圆心坐标和圆的半径

R7=RES [0]R8=RES [1]R9=RES [2] +5;圆心坐标放在R7、R8里,半径放在R9里 (RES[2]中是计算出的半径,加上5的意思是假设碰的是内圆,寻边器的触头半径是5 mm。如果碰的是外圆,则把加号改成减号。后面的数是寻边器触头半径,需根据实际情况打入)

ENDIF

M17

比较这个程序和原文的程序可以看出,原文中用于计算圆心坐标的两个很复杂的计算式仅用一个CALCDAT函数即可实现 (还计算出了圆的半径),不仅程序简练了,而且编程难度也明显降低了。

猜你喜欢
个点数组点数
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
看不到的总点数
Excel数组公式在林业多条件求和中的应用
画点数
画线串点
由一道习题引出的思考
多核并行的大点数FFT、IFFT设计
寻找勾股数组的历程
关于m2(3,q)的上界