插补程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "math.h"
#include "stdio.h"
main()
{
int type;
while(1)
{
printf("请输入线型:\n");
printf("1表示直线\n2表示圆弧\n3表示退出\n");
scanf("%d",&type);
if(type==1)
Line();
else
if(type==2)
Arc();
else
break;
}
}
void Line()
{
int m=0,x,y,x0,y0,xe,ye,JX,JY,JS,F1=0,F2;
printf("请输入直线的起点坐标和终点坐标(数据之间用逗号分隔):\n");
scanf("%d,%d,%d,%d",&x0,&y0,&xe,&ye);
x=x0;
y=y0;
JX=xe-x0;
JS=abs(JX)+abs(JY);
printf("偏差判别坐标进给终点判断偏差运算\n");
while(JS!=0)
{
if(F1>=0)
{
if(JX>0)
x++;
else
x--;
F2=F1-abs(JY);
JS-=1;
if(F1>0)
if(JX>0)
printf(" F%d>0 +X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);
else
printf(" F%d>0 -X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);
else
if(JX<0)
printf(" F%d=0 +X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);
else
printf(" F%d=0 -X %d F%d=F%d-|Ye-Y0|=%d\n",m,JS,m+1,m,F2);
F1=F2;
}
else
{
if(JY>0)
y++;
else
y--;
F2=F1+abs(JX);
if(JY<0)
printf(" F%d<0 +Y %d F%d=F%d+|Xe-X0|=%d\n",m,JS,m+1,m,F2);
else
printf(" F%d<0 -Y %d F%d=F%d+|Xe-X0|=%d\n",m,JS,m+1,m,F2);
F1=F2;
m++;
}
}
}
void Arc()
{
int m=0,x,y,x0,y0,xe,ye,dox,doy,JX,JY,Ie,Je,F1=0,F2,flag;
int R1,R2,R3,R4,SR1,SR2,SR3,SR4,NR1,NR2,NR3,NR4;
printf("请输入圆弧类型:\n1表示顺园\n2表示逆圆\n");
scanf("%d",&flag);
printf("请输入圆弧的起点,终点坐标以及圆心相对起点的坐标(数据之间用逗号分
隔):\n");
scanf("%d,%d,%d,%d,%d,%d",&x0,&y0,&xe,&ye,&dox,&doy);
x=x0;
y=y0;
Ie=xe-(x0+dox);
Je=ye-(y0+doy);
printf("偏差判别坐标进给偏差运算终点判别\n");
while((Ie-JX)!=0||(Je-JY)!=0)/*for(;i<=1;)*/
{
R1=(JX>0)&&(JY>=0);
R3=(JX<0)&&(JY<=0);
R4=(JX>=0)&&(JY<0);
SR1=(flag==1)&&R1;
SR2=(flag==1)&&R2;
SR3=(flag==1)&&R3;
SR4=(flag==1)&&R4;
NR1=(flag==2)&&R1;
NR2=(flag==2)&&R2;
NR3=(flag==2)&&R3;
NR4=(flag==2)&&R4;
if(F1>=0)
if(SR1||NR2||SR3||NR4)
if(SR3||NR4)
{
y++;
F2=F1+2*JY+1;
JY+=1;
if(F1>0)
{
printf(" F%d>0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
else
{
printf(" F%d=0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
F1=F2;
m++;
}
else
{
y--;
F2=F1-2*JY+1;
JY-=1;
if(F1>0)
{
printf(" F%d>0 -Y F%d=F%d-2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
else
{
printf(" F%d=0 -Y F%d=F%d-2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
F1=F2;
}
else
if(SR2||NR3)
{
x++;
F2=F1+2*JX+1;
JX+=1;
if(F1>0)
{
printf(" F%d>0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
else
{
printf(" F%d=0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
F1=F2;
m++;
}
else
{
x--;
F2=F1-2*JX+1;
JX-=1;
if(F1>0)
{
printf(" F%d>0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
else
{
printf(" F%d=0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
}
F1=F2;
m++;
}
else
if(SR2||NR1||SR4||NR3)
if(NR1||SR2)
{
y++;
F2=F1+2*JY+1;
JY+=1;
printf(" F%d<0 +Y F%d=F%d+2*J%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
F1=F2;
else
{
y--;
F2=F1-2*JY+1;
JY-=1;
printf(" F%d<0 -Y F%d=F%d-2*J%d+1=%d
I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
F1=F2;
m++;
}
else
if(SR1||NR4)
{
F2=F1+2*JX+1;
JX+=1;
printf(" F%d<0 +X F%d=F%d+2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
F1=F2;
m++;
}
else
{
x--;
F2=F1-2*JX+1;
JX-=1;
printf(" F%d<0 -X F%d=F%d-2*I%d+1=%d I%d-Ie=%d\n",m,m+1,m,m,F2,m+1,JX-Ie);
printf(" (%d,%d) J%d-Je=%d\n",JX,JY,m+1,JY-Je);
F1=F2;
}
}。

相关文档
最新文档