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

上传人:b****5 文档编号:27921440 上传时间:2023-07-06 格式:DOCX 页数:23 大小:83.70KB
下载 相关 举报
C语言模拟直线插补与圆弧插补程序设计.docx_第1页
第1页 / 共23页
C语言模拟直线插补与圆弧插补程序设计.docx_第2页
第2页 / 共23页
C语言模拟直线插补与圆弧插补程序设计.docx_第3页
第3页 / 共23页
C语言模拟直线插补与圆弧插补程序设计.docx_第4页
第4页 / 共23页
C语言模拟直线插补与圆弧插补程序设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

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

《C语言模拟直线插补与圆弧插补程序设计.docx》由会员分享,可在线阅读,更多相关《C语言模拟直线插补与圆弧插补程序设计.docx(23页珍藏版)》请在冰豆网上搜索。

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

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

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

数控技术课程设计

说明书

 

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

 

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

机械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"

inti,X,Y,X0,Y0,Xe,Ye,F,N;

inta[30][2];

voidmain()

{

intm;

intmenu();

voidyi();

voider();

voidsan();

voidsi();

voidte();

voidshuchu();

m=menu();

a[0][0]=X0;

a[0][1]=Y0;

switch(m)

{

case1:

yi();shuchu();break;

case2:

er();shuchu();break;

case3:

san();shuchu();break;

case4:

si();shuchu();break;

case5:

te();shuchu();break;

default:

printf("无法插补\n");

}

}

intmenu()

{

intt;

printf("输入起点坐标\n");

scanf("%d,%d",&X0,&Y0);

printf("输入终点坐标\n");

scanf("%d,%d",&Xe,&Ye);

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

t=1;

elseif(Xe<=X0&&Ye>=Y0)

t=2;

elseif(Xe<=X0&&Ye<=Y0)

t=3;

elseif(Xe>=X0&&Ye<=Y0)

t=4;

elseif(Xe==X0&&((Ye>Y0&&Y0>=0)||(Ye

t=5;

else

t=6;

return(t);

}

voidyi()

{

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;

}

}

}

voider()

{

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;

}

}

}

voidsan()

{

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;

}

}

}

voidsi()

{

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;}

}

}

voidte()

{

N=Ye-Y0;

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

{

if(Ye>0)

{Y++;

a[i][0]=X;

a[i][1]=Y;}

elseif(Ye<0)

{Y--;

a[i][0]=X;

a[i][1]=Y;}

}

}

voidshuchu()

{

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

106,4

二.圆弧插补

1.圆弧插补程序流程图

2.圆弧插补程序

#include"stdio.h"

#include"math.h"

intX0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4;

inti=1,r,f,s;

voidmain()

{

intm;

intmenu();

voidyishun();

voidyini();

voidershun();

voiderni();

voidsanshun();

voidsanni();

voidsishun();

voidsini();

voidshuchu();

m=menu();

switch(m)

{

case1:

yishun();break;

case2:

yini();break;

case3:

ershun();break;

case4:

yini();break;

case5:

sanshun();break;

case6:

yini();break;

case7:

sishun();break;

case8:

yini();break;

default:

printf("无法插补\n");

}

}

intmenu()

{

intt;

printf("输入原点坐标\n");

scanf("%d,%d",&X0,&Y0);

printf("输入起点坐标\n");

scanf("%d,%d",&X3,&Y3);

printf("输入终点坐标\n");

scanf("%d,%d",&X4,&Y4);

printf("1:

顺时针圆弧\n");

printf("2:

逆时针圆弧\n");

scanf("%d",&s);

X1=X3-X0;

Y1=Y3-Y0;

X2=X4-X0;

Y2=Y4-Y0;

r=X1*X1+Y1*Y1;

if(X1>=0&&Y1>0&&s==1)

t=1;

elseif(X1>0&&Y1>=0&&s==2)

t=2;

elseif(X1<0&&Y1>=0&&s==1)

t=3;

elseif(X1<=0&&Y1<0&&s==2)

t=4;

elseif(X1<=0&&Y1<0&&s==1)

t=5;

elseif(X1<0&&Y1<=0&&s==2)

t=6;

elseif(X1>0&&Y1<=0&&s==1)

t=7;

elseif(X1>=0&&Y1<0&&s==2)

t=8;

else

t=9;

return(t);

}

voidyishun()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

Y1--;

f-=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

X1++;

f+=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(Y1!

=0&&(X1!

=X2||Y1!

=Y2));

if(Y1==0)

{

voidsishun();

sishun();

}

}

voidyini()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

X1--;

f-=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

Y1++;

f+=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(X1!

=0&&(X1!

=X2||Y1!

=Y2));

if(X1==0)

{

voiderni();

erni();

}

}

voidershun()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

X1++;

f+=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

Y1++;

f+=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(X1!

=0&&(X1!

=X2||Y1!

=Y2));

if(X1==0)

{

voidyishun();

yishun();

}

}

voiderni()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

Y1--;

f-=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

X1--;

f-=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(Y1!

=0&&(X1!

=X2||Y1!

=Y2));

if(Y1==0)

{

voidsanni();

sanni();

}

}

voidsanshun()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

Y1++;

f+=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

X1--;

f-=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(Y1!

=0&&(X1!

=X2||Y1!

=Y2));

if(Y1==0)

{

voidershun();

ershun();

}

}

voidsanni()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

X1++;

f+=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

Y1--;

f+=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(X1!

=0&&(X1!

=X2||Y1!

=Y2));

if(X1==0)

{

voidsini();

sini();

}

}

voidsishun()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

X1--;

f-=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

Y1--;

f-=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(X1!

=0&&(X1!

=X2||Y1!

=Y2));

if(X1==0)

{

voidsanshun();

sanshun();

}

}

voidsini()

{

do

{

f=X1*X1+Y1*Y1-r;

if(f>=0)

{

Y1++;

f+=2*Y1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

else

{

X1++;

f+=2*X1+1;

i++;

printf("%d",i);

printf("%d,%d\n",X1,Y1);

}

}

while(Y1!

=0&&(X1!

=X2||Y1!

=Y2));

if(Y1==0)

{

voidyini();

yini();

}

}

3.程序结果

例如圆心(0,0)起点(4,3)终点(4,3)

步数坐标

14,3

23,3

33,4

42,4

52,5

61,5

70,5

80,4

9-1,4

10-2,4

11-3,4

12-3,3

13-4,3

14-4,2

15-5,2

16-5,1

17-5,0

18-4,0

19-4,-1

20-4,-2

21-4,-3

22-3,3

23-3,-4

24-2,-4

25-2,-5

26-1,-5

270,-5

280,-4

291,-4

302,-4

313,-4

323,-3

334,-3

344,-2

355,-2

365,-1

375,0

384,0

394,1

404,2

414,3

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1