《基于Matlab的四象限圆弧插补程序.doc》由会员分享,可在线阅读,更多相关《基于Matlab的四象限圆弧插补程序.doc(4页珍藏版)》请在金锄头文库上搜索。
1、基于Matlab的四象限圆弧插补程序X0=input(请输入起点横轴坐标x: );Y0=input(请输入起点纵轴坐标y: );NXY=input(请输入差补步数: );pace=input(请输入差补步长: );RNSS=input(请选择差补走向(1代表顺时针/2代表逆时针): );XM=X0;YM=Y0;%画基准圆R=sqrt(X0X0+Y0Y0); alpha=0:pi/20:2pi;xx=R*cos(alpha); yy=R*sin(alpha); plot(xx,yy,g:);hold on;axis equal;%针对跨象限运行时对ZF初始化(由于在跨象限运行时不改变ZF值所以必
2、须对其初始化)ZF=(RNSS=1)*((Y0=0)*(X00)4+(X00)*3))+((X0=0)*(Y00)*1+(Y00)*2+(Y00)1));%建立NXY次循环来实现差补计算与绘图for num=1:NXY %FM值判断 FM=XM*XM+YM*YMX0X0-Y0Y0;象限判断(RNS为1,2,3,4分别代表1,2,3,4象限) RNS=(XM0)((YM0)1+(YM0)4)+(XM0)*(YM0)2+(YM0)3);走步计算(RNS百位为1表示逆时针画圆,十位为1表示FM0,个位数字表示所在象限,ZF代表走步方向) switch RNS+((FM0)10)+(RNSS=1)10
3、0 case 001 ZF=4; case 002 ZF=1; case 003 ZF=3; case 004 ZF=2; case 011 ZF=1; case 012 ZF=3; case 013 ZF=2; case 014 ZF=4; case 101 ZF=2; case 102 ZF=4; case 103 ZF=1; case 104 ZF=3; case 111 ZF=3; case 112 ZF=2; case 113 ZF=4; case 114 ZF=1; end%步进电机走步(由ZF控制走步方向由pace控制步长) switch ZF case 1 x1=XM,XM+pace; y1=YM,YM; case 2 x1=XM,XMpace; y1=YM,YM; case 3 x1=XM,XM; y1=YM,YM+pace; case 4 x1=XM,XM; y1=YM,YMpace; end plot(x1,y1,r); %由此点和前一点坐标组成的2个向量画直线 XM=x1(2); 保存此点坐标供下次作图和比较时使用 YM=y1(2); hold on; pause(0。01); %延时程序形参为每走一步所用时间 endhold off;3