C语言模拟直线插补与圆弧插补程序的设计说明Word下载.docx
《C语言模拟直线插补与圆弧插补程序的设计说明Word下载.docx》由会员分享,可在线阅读,更多相关《C语言模拟直线插补与圆弧插补程序的设计说明Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
![C语言模拟直线插补与圆弧插补程序的设计说明Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/3/4be32e09-b744-4ea3-9ec1-258bc822bba0/4be32e09-b744-4ea3-9ec1-258bc822bba01.gif)
voidyi();
voider();
voidsan();
voidsi();
voidte();
voidshuchu();
m=menu();
a[0][0]=X0;
a[0][1]=Y0;
switch(m)
{
case1:
yi();
shuchu();
break;
case2:
er();
case3:
san();
case4:
si();
case5:
te();
default:
printf("
无法插补\n"
);
}
}
intmenu()
intt;
printf("
输入起点坐标\n"
scanf("
%d,%d"
&
X0,&
Y0);
输入终点坐标\n"
Xe,&
Ye);
if(Xe>
=X0&
&
Ye>
=Y0)
t=1;
elseif(Xe<
=Y0)
t=2;
Ye<
t=3;
elseif(Xe>
t=4;
elseif(Xe==X0&
((Ye>
Y0&
Y0>
=0)||(Ye<
Y<
=0)))
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++;
F+=Xe-X0;
}
voider()
N=X0-Xe+Ye-Y0;
{if(F>
{X--;
F+=X0-Xe;
voidsan()
N=X0-Xe+Y0-Ye;
{X--;
F-=Y0-Ye;
Y--;
voidsi()
N=Xe-X0+Y0-Ye;
{Y--;
voidte()
N=Ye-Y0;
if(Ye>
0)
{Y++;
a[i][0]=X;
elseif(Ye<
{Y--;
voidshuchu()
for(i=0;
{
printf("
%d"
i);
%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.圆弧插补程序
math.h"
intX0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4;
inti=1,r,f,s;
voidyishun();
voidyini();
voidershun();
voiderni();
voidsanshun();
voidsanni();
voidsishun();
voidsini();
yishun();
yini();
ershun();
sanshun();
case6:
case7:
sishun();
case8:
intt;
输入原点坐标\n"
X3,&
Y3);
X4,&
Y4);
1:
顺时针圆弧\n"
2:
逆时针圆弧\n"
%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)
elseif(X1>
s==2)
elseif(X1<
s==1)
t=3;
Y1<
s==2)
t=4;
t=6;
t=7;
t=8;
t=9;
voidyishun()
do
f=X1*X1+Y1*Y1-r;
if(f>
Y1--;
f-=2*Y1+1;
i++;
X1,Y1);
X1++;
f+=2*X1+1;
while(Y1!
(X1!
=X2||Y1!
=Y2));
if(Y1==0)
sishun();
voidyini()
X1--;
f-=2*X1+1;
Y1++;
f+=2*Y1+1;
while(X1!
if(X1==0)
voiderni();
erni();
voidershun()
f=X1*X1+Y1*Y1-r;
if(f>
X1++;
voidyishun();
yishun();
voiderni()
X1--;
sanni();
voidsanshun()
Y1++;
ershun();
voidsanni()
do
Y1--;
sini();
voidsishun()
sanshun();
voidsini()
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