C语言模拟直线插补与圆弧插补程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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