語言模擬直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計_第1頁
語言模擬直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計_第2頁
語言模擬直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計_第3頁
語言模擬直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計_第4頁
語言模擬直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)控技術(shù)課程設(shè)計說明書設(shè)計題目 直線插補(bǔ)與圓弧插補(bǔ)程序設(shè)計 機(jī)械設(shè)計以及自動化專業(yè) 機(jī)械工程學(xué)院 機(jī)械102班 設(shè)計者 青島理工大學(xué) 2013年6月20日目 錄1. 設(shè)計題目12.目錄23.直線插補(bǔ)流程圖34.直線插補(bǔ)程序45.程序結(jié)果86.圓弧插補(bǔ)流程圖97.圓弧插補(bǔ)程序108.程序結(jié)果21一直線插補(bǔ)1.直線插補(bǔ)程序流程圖置FM=0輸入XE、YE、XOY、NXYFM0?XOR=1或4?XOR=1或2?ZF=1ZF=2ZF=3ZF=4FM=FM-YEFM=FM+YE調(diào)用走步控制程序NXY=NXY-1NXY=0?開始 結(jié)束YNYNYNYN2.直線插補(bǔ)程序設(shè)計#include "stdi

2、o.h"int i,X,Y,X0,Y0,Xe,Ye,F,N;int a302;void main() int m; int menu(); void yi(); void er(); void san(); void si(); void te(); void shuchu(); m=menu(); a00=X0; a01=Y0; switch(m) case 1:yi();shuchu();break; case 2:er();shuchu();break; case 3:san();shuchu();break; case 4:si();shuchu();break; case

3、5:te();shuchu();break; default:printf("無法插補(bǔ)n"); int menu() int t; printf("輸入起點坐標(biāo)n"); scanf("%d,%d",&X0,&Y0); printf("輸入終點坐標(biāo)n"); scanf("%d,%d",&Xe,&Ye); if (Xe>=X0&&Ye>=Y0) t=1; else if (Xe<=X0&&Ye>=Y0) t=2;

4、 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<Y0&&Y<=0) t=5; 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+; ai0=X; ai1=Y; F-=Ye-Y0; el

5、se Y+; ai0=X; ai1=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-; ai0=X; ai1=Y; F-=Ye-Y0; else Y+; ai0=X; ai1=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-; ai0=X; ai1=Y; F-=Y0-Ye; else Y-; ai0=X; ai1=Y; F+=X0-Xe

6、; void si() F=0; N=Xe-X0+Y0-Ye; X=X0; Y=Y0; for(i=1;i<=N;i+) if(F>=0) X+; ai0=X; ai1=Y; F-=Y0-Ye; else Y-; ai0=X; ai1=Y; F+=Xe-X0; void te()N=Ye-Y0; for(i=1;i<=N;i+) if(Ye>0) Y+; ai0=X; ai1=Y; else if(Ye<0) Y-; ai0=X; ai1=Y; void shuchu() for(i=0;i<=N;i+) printf("%d",i);

7、printf("%d,%dn",ai0,ai1); 3程序結(jié)果例如 起點(0,0)終點(6,4)步數(shù) 坐標(biāo)1 1,02 1,13 2,14 2,25 3,26 4,27 4,38 5,39 6,310 6,4二.圓弧插補(bǔ)1.圓弧插補(bǔ)程序流程圖ZF=4ZF=4RNS=1,6?RNS=2,5?輸入X0、Y0、NXY、RNS置FM=0、XM=X0、YM=Y0RNS=1,2,6,8?FM0?FM0?RNS=2,7?RNS=1,8?ZF=3ZF=2ZF=1ZF=1ZF=2ZF=3FM=FM-2XM=1FM=FM+2XM=1FM=FM-2YM=1FM=FM+2YM+1YM=YM+1YM

8、=XM-1YM=XM+1YM=YM-1調(diào)用走步控制程序NXY=NXY-1NXY=0?結(jié)束NNYNYYNNYNYNYNYN NNN2.圓弧插補(bǔ)程序#include "stdio.h"#include "math.h"int X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4;int i=1,r,f,s;void main() int m; int menu(); void yishun(); void yini(); void ershun(); void erni(); void sanshun(); void sanni(); void sis

9、hun(); void sini(); void shuchu(); m=menu(); switch(m) case 1:yishun();break; case 2:yini();break; case 3:ershun();break; case 4:yini();break; case 5:sanshun();break; case 6:yini();break; case 7:sishun();break; case 8:yini();break; default:printf("無法插補(bǔ)n"); int menu() int t; printf("輸入

10、原點坐標(biāo)n"); scanf("%d,%d",&X0,&Y0); printf("輸入起點坐標(biāo)n"); scanf("%d,%d",&X3,&Y3); printf("輸入終點坐標(biāo)n"); scanf("%d,%d",&X4,&Y4); printf("1:順時針圓弧n"); printf("2:逆時針圓弧n"); scanf("%d",&s); X1=X3-X0; Y1

11、=Y3-Y0; X2=X4-X0; Y2=Y4-Y0; r=X1*X1+Y1*Y1; if (X1>=0&&Y1>0&&s=1) t=1; else if (X1>0&&Y1>=0&&s=2) t=2; else if (X1<0&&Y1>=0&&s=1) t=3; else if (X1<=0&&Y1<0&&s=2) t=4; else if (X1<=0&&Y1<0&&s=

12、1) t=5; else if (X1<0&&Y1<=0&&s=2) t=6; else if (X1>0&&Y1<=0&&s=1) t=7; else if (X1>=0&&Y1<0&&s=2) t=8; else t=9; return(t); void yishun() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%

13、dn",X1,Y1); else X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void sishun(); sishun(); void yini() do f=X1*X1+Y1*Y1-r; if(f>=0) X1-; f-=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); el

14、se Y1+; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void erni(); erni(); void ershun() do f=X1*X1+Y1*Y1-r; if(f>=0) X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1+; f+=2*Y1+1; i+

15、; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void yishun(); yishun(); void erni() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else X1-; f-=2*X1+1; i+; printf("%d&q

16、uot;,i); printf("%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void sanni(); sanni(); void sanshun() do f=X1*X1+Y1*Y1-r; if(f>=0) Y1+; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else X1-; f-=2*X1+1; i+; printf("%d",i); printf(&q

17、uot;%d,%dn",X1,Y1); while(Y1!=0&&(X1!=X2|Y1!=Y2); if(Y1=0) void ershun(); ershun(); void sanni() do f=X1*X1+Y1*Y1-r; if(f>=0) X1+; f+=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1-; f+=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X

18、1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void sini(); sini(); void sishun() do f=X1*X1+Y1*Y1-r; if(f>=0) X1-; f-=2*X1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); else Y1-; f-=2*Y1+1; i+; printf("%d",i); printf("%d,%dn",X1,Y1); while(X1!=0&&(X1!=X2|Y1!=Y2); if(X1=0) void sans

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論