




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、插補(bǔ)程序源代碼目錄1逐點(diǎn)比較法插補(bǔ)c語(yǔ)言程序源代碼022逐點(diǎn)比較法圓弧插補(bǔ) VB源程序 073逐點(diǎn)比較法直線插補(bǔ)VB源程序114時(shí)間分割法直線插補(bǔ)參考 VB程序 135時(shí)間分割法圓弧插補(bǔ) VB源程序 141 / 141 逐點(diǎn)比較法插補(bǔ) c 語(yǔ)言程序源代碼#include "conio.h"#include "graphics.h"#include "process.h"#define Ni_circle 0#define Shun_circle 1void init_graph();void draw_Base_circle();vo
2、id draw_cabu_circle();void close_graph();void acrroods();static float x0,y0;void line_cabu(), draw_line(),draw_line_cabu();void line_cabu() /* 此函數(shù)控制直線插步兩次 */int i;init_graph();sleep(1);for(i=0;i<2;i+)line(0,120,300,120); outtextxy(310,120,"Z");line(100,10,100,300); outtextxy(110,300,&qu
3、ot;X");outtextxy(90,130,"O");draw_line();if(i=0)draw_line_cabu(6);else draw_line_cabu(2);gotoxy(50,5);getch();cleardevice();setcolor(WHITE);void draw_line()/* 畫(huà)直線 */line(100,120,600,450);textcolor(YELLOW);directvideo=0;gotoxy(45,5); cprintf("Line from:X0Y0 Z0 ");gotoxy(45,6)
4、; cprintf("Line to :X500 Y0 Z330");gotoxy(45,7); cprintf("Units :Pixel");gotoxy(45,8); cprintf("Line now:");void draw_line_cabu(int step)/* 關(guān)鍵的直線插補(bǔ)函數(shù) */2 / 14int Xe=600,Ye=450;float Fm,Xm=100,Ym=120;setcolor(RED);moveto(Xm,Ym);while(Xm<=Xe&&Ym<=Ye)Fm=(Ym-1
5、20)*(Xe-100)-(Xm-100)*(Ye-120); if(Fm>=0)Xm=Xm+step;elseYm=Ym+step;lineto(Xm,Ym);gotoxy(55,8); printf("X%3.0f Y0 Z%3.0f",Xm-100,Ym-120);delay(1100);/* 圓插補(bǔ)部分的函數(shù)區(qū) */void init_graph()/* 圖形系統(tǒng)初始化 */int gdrive=DETECT,gmode;initgraph(&gdrive,&gmode,"");cleardevice();void acrr
6、oods()/* 屏幕中心坐標(biāo) */x0=getmaxx()/2;y0=getmaxy()/2;void draw_Base_circle() /* 畫(huà)圓及寫(xiě)參數(shù) */line(x0-200,y0,x0+200,y0); outtextxy(x0+220,y0,"Z");line(x0,y0-180,x0,y0+180); outtextxy(x0+10,y0+180,"X"); outtextxy(x0-10,y0+10,"O");circle(x0,y0,150);textcolor(YELLOW);directvideo=0;g
7、otoxy(46,2);cprintf("Circle start:X0 Y0 Z150"); gotoxy(46,3);cprintf("Circle end:X0 Y0 Z150");gotoxy(46,4);cprintf("Units :Pixel"); gotoxy(46,5);cprintf("Circle now:");void close_graph()/* 關(guān)圖形系統(tǒng) */3 / 14closegraph();void draw_cabu_circle(int sstep,int Director
8、y)/* 關(guān)鍵的圓插補(bǔ)函數(shù) */int flag=0;float Fm,Xm,Ym; Xm=x0+150; Ym=y0;moveto(Xm,Ym); setcolor(RED);while(1) /* 分象限,順圓和逆圓討論 */Fm=(Xm-x0)*(Xm-x0)+(Ym-y0)*(Ym-y0)-150*150;/* 圓判斷公式 */ if(Fm>=0)if(!Directory) /* 逆圓判斷 */ if(Xm>=x0&&Ym<=y0)if(flag) break; /*if 語(yǔ)句判斷象限,以下一樣 */ else Xm=Xm-sstep; if(Xm&
9、lt;=x0&&Ym<=y0)flag=1; Ym=Ym+sstep; if(Xm<=x0&&Ym>=y0) Xm=Xm+sstep;if(Xm>=x0&&Ym>=y0) Ym=Ym-sstep;else /*it is Directory's else*/ if(Xm>x0&&Ym<y0)Ym=Ym+sstep; if(Xm<=x0&&Ym<=y0)Xm=Xm+sstep; if(Xm<x0&&Ym>y0) flag=1;
10、Ym=Ym-sstep; if(Xm>=x0&&Ym>=y0) if(flag) break;Xm=Xm-sstep; else /*it is Fm's else*/ if(!Directory) if(Xm>x0&&Ym<y0) 4 / 14if(flag) break;else Ym=Ym-sstep;if(Xm<=x0&&Ym<=y0)flag=1; Xm=Xm-sstep;if(Xm<=x0&&Ym>=y0)Ym=Ym+sstep;if(Xm>=x0&
11、&Ym>=y0)Xm=Xm+sstep;elseif(Xm>x0&&Ym<y0)Xm=Xm+sstep;if(Xm<=x0&&Ym<=y0)Ym=Ym-sstep;if(Xm<=x0&&Ym>=y0)flag=1; Xm=Xm-sstep; if(Xm>=x0&&Ym>=y0) if(flag) break;else Ym=Ym+sstep;lineto(Xm,Ym);gotoxy(58,5); printf("X%3.0f Y0 Z%3.0f ",
12、Ym-y0,Xm-x0); delay(800);void circle_demo(int Directory)/* 控制圓插補(bǔ)兩次 */int i=0,sstep;init_graph();sleep(2);acrroods(&x0,&y0);for(i=0;i<2;i+)draw_Base_circle(150);if(i=0)sstep=6;draw_cabu_circle(sstep,Directory);elsesstep=1;draw_cabu_circle(sstep,Directory);5 / 14getch();cleardevice();setcol
13、or(WHITE);/* 圓插補(bǔ)部分的函數(shù)區(qū)結(jié)束 */main()/* 主函數(shù)負(fù)責(zé)寫(xiě)封面和函數(shù)調(diào)用 */int choice=0;init_graph();while(choice!=4)setfillstyle(1,RED); bar(200,30,400,80); setcolor(GREEN);settextstyle(3,0,10); outtextxy(220,50,"DEMO PROGRAM BY P.Y.F"); setcolor(WHITE);settextstyle(0,0,1);gotoxy(46,13);outtextxy(200,120,"
14、1. Line demo."); outtextxy(200,140,"2. Shun_Circle demo."); outtextxy(200,160,"3. Ni_Circle demo."); outtextxy(200,180,"4. Quit the program."); outtextxy(160,200,"Please enter your choice:"); scanf("%d",&choice);switch(choice)case 1: line_ca
15、bu();break;case 2: circle_demo(Ni_circle);break; case 3: circle_demo(Shun_circle);break; case 4: break;default: printf("nChoice wrong,try again!");close_graph();6 / 142 逐點(diǎn)比較法圓弧插補(bǔ) VB 源程序Sub 偏差計(jì)算 ()偏差 = Sqr(x 動(dòng)點(diǎn) - x 圓心 ) 2 + (z 動(dòng)點(diǎn) - z 圓心 ) 2) - R End Sub Sub 插補(bǔ) ()x 動(dòng)點(diǎn) = x 起點(diǎn) : z 動(dòng)點(diǎn) = z 起點(diǎn) :
16、動(dòng)點(diǎn)象限判別 xx: Select Case 象限標(biāo)志 Case 1: 單步連續(xù)判斷If 順逆標(biāo)志 = "順" Then '第一象限插補(bǔ)Do Until (x 動(dòng)點(diǎn) - x 終點(diǎn) ) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn) ) = 0 If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) - 1:Line -Step(0, -x 步長(zhǎng) ), vbRedElse z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1: Line -Step(z 步長(zhǎng) , 0), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 1 Then GoTo xx End I
17、f 單步連續(xù)判斷LoopElseIf 順逆標(biāo)志 = " 逆 " ThenDo Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Then z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) - 1: Line -Step(-z 步長(zhǎng) , 0), vbRedElse x 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1: Line -Step(0, x 步長(zhǎng) ), vbRedEnd If DoEvents 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 1 Then GoTo xxEnd IfLoopEnd If Case 2: 單步連續(xù)判斷If
18、 順逆標(biāo)志 = "順" Then '第二象限插補(bǔ)Do Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Then z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) - 1: Line -Step(-z 步長(zhǎng) , 0), vbRedElsex 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) - 1:Line -Step(0, -x 步長(zhǎng) ), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 2 Then GoTo xx End IfLoopElseIf 順逆標(biāo)志 = " 逆 " ThenDo Unt
19、il (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(0, x 步長(zhǎng) ), vbRedElse z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1: Line -Step(z 步長(zhǎng) , 0), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 2 Then GoTo xx End IfLoopEnd IfCase 3: 單步連續(xù)判斷If 順逆標(biāo)志 = "順" Then '第三象限插補(bǔ)Do Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0
20、 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(0, x 步長(zhǎng) ), vbRedElse z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) - 1: Line -Step(-z 步長(zhǎng) , 0), vbRedEnd If DoEvents 偏差計(jì)算 動(dòng)點(diǎn)象限判別If 象限標(biāo)志 <> 3 Then GoTo xxEnd IfLoopElseIf 順逆標(biāo)志 = " 逆 " ThenDo Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 T
21、hen z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1:Line -Step(z 步長(zhǎng) , 0), vbRedElsex 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) - 1:Line -Step(0, -x 步長(zhǎng) ), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 3 Then GoTo xx End IfLoopEnd IfCase 4: 單步連續(xù)判斷If 順逆標(biāo)志 = "順" Then '第三象限插補(bǔ)Do Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Then z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1:
22、 Line -Step(z 步長(zhǎng) , 0), vbRedElsex 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(0, x 步長(zhǎng) ), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別 If 象限標(biāo)志 <> 4 Then GoTo xxEnd IfLoopElseIf 順逆標(biāo)志 = " 逆 " ThenDo Until (x 動(dòng)點(diǎn) - x 終點(diǎn)) = 0 And (z 動(dòng)點(diǎn) - z 終點(diǎn)) = 0 If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) - 1:Line -Step(0, -x 步長(zhǎng) ), vbRedElse z 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) - 1
23、: Line -Step(-z 步長(zhǎng) , 0), vbRedEnd If 偏差計(jì)算 動(dòng)點(diǎn)象限判別If 象限標(biāo)志 <> 4 Then GoTo xxEnd IfLoopEnd IfEnd SelectEnd Sub9 / 143 逐點(diǎn)比較法直線插補(bǔ) VB 源程序Sub 偏差計(jì)算 ()偏差 = Abs(x終點(diǎn))X Z動(dòng)點(diǎn)-x 動(dòng)點(diǎn) X Abs(z終點(diǎn))End SubSub 插補(bǔ) ()Dim c As Integer10 / 14# / 14Select Case 象限標(biāo)志Case 1:' 第一象限插補(bǔ)Do Until x 動(dòng)點(diǎn) + z 動(dòng)點(diǎn) >= 總步數(shù)If 偏差 >
24、;= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(0, x 步長(zhǎng) ), vbRedElsez 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1:Line -Step(z 步長(zhǎng) , 0), vbRedEnd If 偏差計(jì)算LoopCase 2:' 第二象限插補(bǔ)c = x 終點(diǎn): x 終點(diǎn)= z 終點(diǎn): z 終點(diǎn)= -cc = x 步長(zhǎng) : x 步長(zhǎng) = z 步長(zhǎng): z 步長(zhǎng) = -cDo Until x 動(dòng)點(diǎn) + z 動(dòng)點(diǎn) >= 總步數(shù)If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(x步長(zhǎng) , 0), vbRedElsez 動(dòng)點(diǎn) = z 動(dòng)
25、點(diǎn) + 1:Line -Step(0, z步長(zhǎng) ), vbRedEnd If偏差計(jì)算LoopCase 3:' 第三象限插補(bǔ)x 步長(zhǎng) = -x 步長(zhǎng) : z 步長(zhǎng) = -z 步長(zhǎng) Do Until x 動(dòng)點(diǎn) + z 動(dòng)點(diǎn) >= 總步數(shù) If 偏差 >= 0 Thenx 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1:Line -Step(0, x 步長(zhǎng) ), vbRedElsez 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1:Line -Step(z 步長(zhǎng) , 0), vbRedEnd If偏差計(jì)算LoopCase 4:' 第四象限插補(bǔ)c = x 終點(diǎn) : x 終點(diǎn) = -z 終點(diǎn): z 終點(diǎn) = c c
26、 = x 步長(zhǎng) : x 步長(zhǎng) = -z 步長(zhǎng): z 步長(zhǎng) = c Do Until x 動(dòng)點(diǎn) + z 動(dòng)點(diǎn) >= 總步數(shù) If 偏差 >= 0 Then步長(zhǎng) , 0),步長(zhǎng) ),x 動(dòng)點(diǎn) = x 動(dòng)點(diǎn) + 1: Line -Step(x vbRedElsez 動(dòng)點(diǎn) = z 動(dòng)點(diǎn) + 1: Line -Step(0, z vbRedEnd If偏差計(jì)算LoopEnd SelectEnd Sub11 / 144 時(shí)間分割法直線插補(bǔ)參考 VB 程序Sub 插補(bǔ) ()Dim l, K, a, B, f1, tx 動(dòng)點(diǎn)對(duì)起點(diǎn) = 0: z 動(dòng)點(diǎn)對(duì)起點(diǎn) = 0fl = f 10: t = Ts / 60000l = Sqr(x終點(diǎn)對(duì)起點(diǎn)A 2 + z終點(diǎn)對(duì)起點(diǎn) A 2)K = flt>/ la = Sqr(x動(dòng)點(diǎn)對(duì)起點(diǎn) -x終點(diǎn)對(duì)起點(diǎn))a 2 + (z動(dòng)點(diǎn)對(duì)起點(diǎn)-z終點(diǎn)對(duì)起點(diǎn))a 2)x步長(zhǎng) =K *終點(diǎn)對(duì)起點(diǎn):z步長(zhǎng) =K 邃終點(diǎn)對(duì)起點(diǎn):B = Sqr(z 步長(zhǎng) A 2 + x 步長(zhǎng) A 2)Do Until a <= B / 2x 動(dòng)點(diǎn)對(duì)起點(diǎn) =
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧波諾丁漢大學(xué)《白描花卉臨摹與寫(xiě)生》2023-2024學(xué)年第一學(xué)期期末試卷
- 網(wǎng)頁(yè)設(shè)計(jì)與制作項(xiàng)目式教程(HTML CSS)(慕課版)-習(xí)題及答案 項(xiàng)目四
- 山東省昌樂(lè)縣第二中學(xué)2025年高三物理試題查缺補(bǔ)漏試題(文理)含解析
- 內(nèi)蒙古大學(xué)創(chuàng)業(yè)學(xué)院《口腔頜面部解剖》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年中考語(yǔ)文熱點(diǎn)寫(xiě)作素材積累:澳門回歸之盛世蓮花譜寫(xiě)“一國(guó)兩制”新篇章
- 2023年上海高考語(yǔ)文試卷(含答案)
- 基礎(chǔ)梁架空施工方案
- 橡膠制品施工方案
- 2025年四愛(ài)屬性測(cè)試題及答案
- 5年級(jí)下冊(cè)英語(yǔ)外研版第一模塊課文
- 腰椎ODI評(píng)分完整版
- 最新-吡格列酮研究進(jìn)展-課件
- 單相電和三相電課件
- 俄羅斯的經(jīng)濟(jì)與政治課件
- 01車輪踏面清掃裝置左
- 中國(guó)氣血健康白皮書(shū)
- 化學(xué)品安全技術(shù)說(shuō)明書(shū) MSDS( 石腦油)
- DB13T 5542-2022 水利水電工程施工組織設(shè)計(jì)編制指南
- 二期6KV系統(tǒng)1
- 研究生面試復(fù)試英語(yǔ)+常問(wèn)問(wèn)題
- 安徽省教育科學(xué)研究項(xiàng)目課題申請(qǐng)書(shū)【模板】
評(píng)論
0/150
提交評(píng)論