C语言模拟直线插补与圆弧插补程序设计

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

数控技术课程设计

说明书

设计题目直线插补与圆弧插补程序设计

机械设计以及自动化专业机械工程学院

机械102班

设计者青岛理工大学

2013年6月20

目录

1.设计题目 (1)

2.目录 (2)

3.直线插补流程图 (3)

4.直线插补程序 (4)

5.程序结果 (8)

6.圆弧插补流程图 (9)

7.圆弧插补程序 (10)

8.程序结果 (21)

一.直线插补

1.直线插补程序流程图

2.直线插补程序设计

#include "stdio.h"

int i,X,Y,X0,Y0,Xe,Ye,F,N;

int a[30][2];

void main()

{

int m;

int menu();

void yi();

void er();

void san();

void si();

void te();

void shuchu();

m=menu();

a[0][0]=X0;

a[0][1]=Y0;

switch(m)

{

case 1:yi();shuchu();break; case 2:er();shuchu();break; case 3:san();shuchu();break; case 4:si();shuchu();break; case 5:te();shuchu();break; default:printf("无法插补\n"); }

}

int menu()

{

int t;

printf("输入起点坐标\n"); scanf("%d,%d",&X0,&Y0); printf("输入终点坐标\n"); scanf("%d,%d",&Xe,&Ye);

if (Xe>=X0&&Ye>=Y0)

t=1;

else if (Xe<=X0&&Ye>=Y0)

t=2;

else if (Xe<=X0&&Ye<=Y0)

t=3;

else if (Xe>=X0&&Ye<=Y0)

t=4;

else if (Xe==X0&&((Ye>Y0&&Y0>=0)||(Ye

else

t=6;

return(t);

}

void yi()

{

F=0;

N=Xe-X0+Ye-Y0;

X=X0;

Y=Y0;

for(i=1;i<=N;i++)

{ if(F>=0)

{X++;

a[i][0]=X;

a[i][1]=Y;

F-=Ye-Y0;}

else

{Y++;

a[i][0]=X;

a[i][1]=Y;

F+=Xe-X0;

}

}

}

void er()

{

F=0;

N=X0-Xe+Ye-Y0;

X=X0;

Y=Y0;

for(i=1;i<=N;i++)

{if(F>=0)

{ X--;

a[i][0]=X;

a[i][1]=Y;

F-=Ye-Y0;}

else

{Y++;

a[i][0]=X;

a[i][1]=Y;

F+=X0-Xe;

}

}

}

void san()

{

F=0;

N=X0-Xe+Y0-Ye; X=X0;

Y=Y0;

for(i=1;i<=N;i++)

{if(F>=0)

{X--;

a[i][0]=X;

a[i][1]=Y;

F-=Y0-Ye;}

else

{

Y--;

a[i][0]=X;

a[i][1]=Y;

F+=X0-Xe;

}

}

}

void si()

{

F=0;

N=Xe-X0+Y0-Ye; X=X0;

Y=Y0;

for(i=1;i<=N;i++)

{if(F>=0)

{X++;

a[i][0]=X;

a[i][1]=Y;

F-=Y0-Ye;}

else

{ Y--;

a[i][0]=X;

a[i][1]=Y;

F+=Xe-X0;}

}

}

void te()

{

N=Ye-Y0;

for(i=1;i<=N;i++)

{

if(Ye>0)

{Y++;

a[i][0]=X;

a[i][1]=Y;}

else if(Ye<0)

{Y--;

a[i][0]=X;

a[i][1]=Y;}

}

}

void shuchu()

{

for(i=0;i<=N;i++)

{

printf("%d ",i);

printf("%d,%d\n",a[i][0],a[i][1]);

}

}

3.程序结果

例如起点(0,0)终点(6,4)步数坐标

11,0

21,1

32,1

42,2

53,2

64,2

74,3

85,3

96,3

相关文档
最新文档