直线插补与圆弧插补程序设计 一.直线插补 1.直线插补程序流程图 Y N N 开始 输入相关数据:x0,y0,xe,ye, X=|xe-x0| Y=|ye-y0| n=X+Y x0>=0 且 y0>=0 且xe>=0 且 ye>=0 CHABU1(F,n,Y,X) x0<=0 且 y0>=0 且xe<=0 且 ye>=0 x0<=0 且 y0<=0 且xe<=0 且 ye<=0 CHABU2(F,n,Y,X) CHABU3(F,n,Y,X) x0>=0 且 y0<=0 且xe>=0 且 ye<=0 CHABU3(F,n,Y,X) "跨象限运动" 输出子函数计算结果 结束 直线插补程序设计: #include"stdio.h" #include"math.h" void CHABU1 (int F,int n,int Y,int X) /*第一象限调用函数*/ { int nx=0,ny=0; for(;n>0; n--) { printf("运算前:F=%d ",F); if(F>=0) { printf("需走步数:n=%d\n",n); printf("------向+xe 方向走一步 "); F=F-Y; printf("F=%d ",F); printf("+X\n"); nx++; /*X 方向走的总步数*/ } else { printf("需走步数:n=%d\n",n); printf("------向+ye 方向走一步 "); F=F+X; printf("F=%d ",F); printf("+Y\n"); ny++; /*y 方向走的总步数*/ } } printf("nx=%d,ny=%d\n",nx,ny); } void CHABU2(int F,int n,int Y,int X) /*第二象限调用函数*/ { int nx=0,ny=0; for(;n>0; n--) { printf("运算前:F=%d ",F); if(F>=0) { printf("需走步数:n=%d\n",n); printf("------向-xe 方向走一步 "); F=F-Y; printf("F=%d ",F); printf("-X\n"); nx++; /*X 方向走的总步数*/ } else { printf("需走步数:n=%d\n",n); printf("------向+ye 方向走一步 "); F=F+X; printf("F=%d ",F); printf("+Y\n"); ny++; /*y 方向走的总步数*/ } } printf("nx=%d,ny=%d\n",nx,ny); } void CHABU3(int F,int n,int Y,int X) /*第三象限调用函数*/ { int nx=0,ny=0; for(;n>0; n--) { printf("运算前:F=%d ",F); if(F>=0) { printf("需走步数:n=%d\n",n); printf("------向-xe 方向走一步 "); F=F-Y; printf("F=%d ",F); printf("-X\n"); nx++; /*X 方向走的总步数*/ } else { printf("需走步数:n=%d\n",n); printf("------向-ye 方向走一步 "); F=F+X; printf("F=%d ",F); printf("-Y\n"); ny++; /*y 方向走的总步数*/ } } printf("nx=%d,ny=%d\n",nx,ny); } void CHABU4(int F,int n,int Y,int X) /*第四象限调用函数*/ { int...