![C++AGV-路徑規(guī)劃與運(yùn)行仿真程序文件_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/30/a6419f75-b8ee-4066-9e7e-147f8f207258/a6419f75-b8ee-4066-9e7e-147f8f2072581.gif)
![C++AGV-路徑規(guī)劃與運(yùn)行仿真程序文件_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/30/a6419f75-b8ee-4066-9e7e-147f8f207258/a6419f75-b8ee-4066-9e7e-147f8f2072582.gif)
![C++AGV-路徑規(guī)劃與運(yùn)行仿真程序文件_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/30/a6419f75-b8ee-4066-9e7e-147f8f207258/a6419f75-b8ee-4066-9e7e-147f8f2072583.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序代碼#in clude<iostream.h>#in clude<fstream.h>#in clude<graphics.h>#in clude<c oni o.h>#in clude<math.h>#in clude<stri ng.h>#in clude<stdio.h>#defi ne MAX 100#defi ne maxD 99999class CFixedMapstruct Coordin ateint x;int y;int num;/記錄點(diǎn)的結(jié)構(gòu)體struct combpint x1,y1
2、;int x2,y2;/連通點(diǎn)坐標(biāo)struct Comb nameint nu m1;int nu m2;/連通點(diǎn)名public:int mVexNum;/頂點(diǎn)數(shù)int mEdgNum;/邊數(shù)double mMatrixMAXMAX; /鄰接矩陣Comb name combMAX; /連通點(diǎn)名combp cpMAX;/連通點(diǎn)坐標(biāo)Coordi nate mVexsMAX; /頂點(diǎn)集合int getx(i nt n 1);int gety(i nt n 2);void In put();以文件方式輸入地圖信息void ShowM ap();/easyx顯示地圖;int CFixedMap:getx
3、(i nt n1)int x=0;for(i nt i=O;i<mVexNum;i+) if(n 1=mVexsi. num) x=mVexsi.x;return x; int CFixedMap:gety(int n2)int y=0;for(i nt i=O;i<mVexNum;i+) if(n 2=mVexsi. num) y=mVexsi.y;return y; void CFixedMap:I nput()int panju;1:是,2:否char fname10="map2.txt" cout<<"是否載入默認(rèn)地圖?cin>
4、; >panju;if(panju=2)cout<<"請(qǐng)輸入地圖信息文件名cin>> fname;ifstream file(fname);char use1100;char use2100;char use3100;char use4100; /use file>>use1; file»mVexNum;/file>>use2;file>>mEdgNum;/file>>use3;for(i nt i=0;i<mVexNum;i+) / 數(shù)組用來儲(chǔ)存提示信息。端點(diǎn)個(gè)數(shù)邊數(shù)輸入所有點(diǎn)的信息fil
5、e»mVexsi. num> >mVexsi.x»mVexsi.y;file>>use4;for(i=0;i<mEdgNum;i+) /輸入連通點(diǎn)編號(hào)file»combi. nu m1»combi. nu m2;file.close();/easyx 顯示地圖void CFixedMap:ShowM ap()初始化繪圖環(huán)境in itgraph(800,600,SHOWCONSOLE| NOCLOSE); /setbkcolor(WHITE); /設(shè)置背景色cleardevice(); /setfillcolor(BLACK)
6、; /用背景色清空屏幕設(shè)置填充色/畫頂點(diǎn)for(i nt i=O;i<mVexNum;i+)fillcircle(mVexsi.x,mVexsi.y,5); settextcolor(BLACK);char sMAX;spri ntf(s, "%d", i+1);outtextxy(mVexsi.x-10,mVexsi.y-20,s); /給實(shí)際連通的頂點(diǎn)連線setli necolor(RGB(0,0,0);setli nestyle(PS_SOLID,6,NULL,O);for(i=0;i<mEdgNum;i+)cpi.x1=getx(combi. nu m1
7、);cpi.y1=gety(combi. nu m1);cpi.x2=getx(combi. nu m2);cpi.y2=gety(combi. nu m2);lin e(cpi.x1,cpi.y1,cpi.x2,cpi.y2); class CPathPla n:public CFixedMappublic:in t pathMAX;/存放最后一個(gè)點(diǎn)double distMAX;/存放路徑距離in t v0;/起始點(diǎn)int route40;/路徑int rnum;/路徑頂點(diǎn)數(shù)Coordi nate rpoi ntsMAX;路徑點(diǎn)集void Map toGraph();void Dijstra
8、();void Putpath();;void CPathPla n:M aptoGraph()rnum=0;int a,b,x,y;for(i nt i=O;i<mVexNum;i+)for(i nt j=O;j<mVexNum;j+)if(i=j) mMatrixij=0;else mMatrixij=maxD;for(i=0;i<mEdgNum;i+)if (combi. nu m1)a=combi. nu m1-1;b=combi. nu m2-1; x=mVexsa.x-mVexsb.x; y=mVexsa.y_mVexsb.y; mMatrixab=sqrt(x*
9、x+y*y); mMatrixba=sqrt(x*x+y*y); void CPathPla n:Dijstra()cout<<"輸入起點(diǎn):"cin> >vO;vO_;int sMAX;in t v;int i;int j;int w;double mi n;for(v=0;v<mVexNum;v+) / 初始化 S,dist,pathsv=0;0表示未求出最短路徑distv=mMatrixvOv; /開始時(shí)假定為最短路徑if(distv<maxD && v!=vO)pathv=vO; /直達(dá)情況else pathv=-1
10、;/無直達(dá)路徑distv0=0;/初始時(shí)v0屬于s集,v0到v0路徑最短sv0=1;for(i=1;i<mVexNum;i+) /假設(shè)由一個(gè)中轉(zhuǎn)點(diǎn)到達(dá)會(huì)近些,驗(yàn)證。再假設(shè)由兩個(gè)中轉(zhuǎn)點(diǎn)到達(dá)會(huì)近些,驗(yàn)證。窮舉mi n=maxD;for(w=0;w<mVexNum;w+) /找一個(gè)最近到的點(diǎn),下標(biāo)裝入vif(sw=0 && distw<min) /點(diǎn) w不屬于 s 集且離 v0 更近v=w;/經(jīng)點(diǎn)w中轉(zhuǎn)min=distw;sv=1;/ 將v并入S,由v0到達(dá)v點(diǎn)最短距離為 min,假設(shè)由v0到v再由v到其余各點(diǎn),更新當(dāng)前最后一個(gè)點(diǎn)與距離for(j=0;j<mV
11、exNum;j+)if(sj=0 && (mi n+mMatrixvj<distj) /如果多經(jīng)過一個(gè)點(diǎn)v到點(diǎn)j的距離更短,更新distj=mi n+mMatrixvj;pathj=v; /點(diǎn)的序號(hào)void CPathPla n:Putpath()int opp20;int乙int i=0;cout<<"輸入終點(diǎn):"cin> >z;z-;int next;ofstream file2("fops.txt");if(distz<maxD && z!=vO) /如果有路徑oppi+=mVex
12、sz. num; / 終點(diǎn)n ext=pathz;/第一個(gè)點(diǎn)while( next!=vO)oppi+=mVexs next, num;n ext=path next; /下一個(gè)點(diǎn)oppi=mVexsv0, num;file2<<" 路徑長(zhǎng)度為:"<<distz<<'n:II起點(diǎn)v0和最短路徑 else if(z!=v0) II無路徑file2<<mVexsz, num<<"<-"<< mVexsvO. num<<"no path"<
13、;<'n:for(i nt j=O;j<i+1;j+)routej=oppi-j;file2<<"路徑為:"for(j=0;j<i;j+)file2<<routej<<"->"rnum=i+1;file2<<routei;file2.close();for(i=0;i<rnum;i+)rpoi ntsi.x=getx(routei);rpoi ntsi.y=gety(routei);rpoi ntsi. num=routei;class CAGVint speed; I
14、IAGV速度int width; IIAGV寬度int len gth; IIAGV長(zhǎng)度public:CAGV();in t getl();int getw();in t gets();;CAGV:CAGV()否)"int panju;cout<<"是否自動(dòng)設(shè)置 AGV信息? (1:是,2: cin> >panju;speed=8;width=6;len gth=6;if(panju=2)cout<<"輸入 AGV的長(zhǎng):"cin> >le ngth;cout<<"輸入 AGV的寬:&q
15、uot;cin> >width;cout<<"輸入 AGV的速度(1-10):"cin> >speed;int CAGV:getl()return len gth;int CAGV:getw()return width;int CAGV:gets()retur n speed;class CAGVShow:public CPathPla n,public CAGVpublic:#define k (abs(y2_y1)/(abs(x1_x2)int a,b,c,d;int x1,x2,y1,y2;int i,j;int l,w,s;voi
16、d show();;void CAGVShow:show()l=getl();w=getw();s=11-gets();for(i nt o=0;o<rnum ;o+)if(o+1=rnu m)break;x1=rpo in tso.x;x2=rpo in tso+1.x;y1=rpoi ntso.y;y2=rpoi ntso+1.y;if(y1!=y2&& x1!=x2)if(x2>x1 &&y2>y1)for(j=1;j<x2-x1;j+)a=x1+j-l;b=y1+j*k+w;c=x1+j+l;d=y1+j*k-w;setfillc
17、olor(RGB(0,0,0);recta ngle(a,b,c,d);clearrecta ngle(a-1,b-k,c,d-k);setl in ecolor(RED);lin e(x1+j,y1+j*k,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1+j,y1+j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5);Sleep(s);if(x2<x1 &&y2<y1)for(j=1;j<x1-x2;j+)a=x1-j-l; b=y1-j*k+w;c=x
18、1-j+l;d=y1-j*k-w; setfillcolor(RGB(0,0,0); recta ngle(a,b,c,d);clearrecta ngle(a-1,b-k,c,d-k); setl in ecolor(RED);lin e(x1-j,y1-j*k,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1-j,y1-j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5); Sleep(s);if(x2<x1 &&y2>y1)for(j=1;j<x1-x
19、2;j+)a=x1-j-l; b=y1+j*k+w;c=x1-j+l; d=y1+j*k-w; setfillcolor(RGB(0,0,0);recta ngle(a,b,c,d); clearrecta ngle(a-1,b-k,c,d-k); setl in ecolor(RED);lin e(x1-j,y1+j*k,x2,y2); setli necolor(GREEN);lin e(x1,y1,x1-j,y1+j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5);Sleep(s);if(x2>x1 &&
20、amp;y2<y1)for(j=1;j<x1-x2;j+) a=x1+j_l;b=y1-j*k+w;c=x1+j+l; d=yi-j*k-w; setfillcolor(RGB(0,0,0);recta ngle(a,b,c,d); clearrecta ngle(a-1,b-k,c,d-k); setl in ecolor(RED);lin e(x1+j,y1-j*k,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1+j,y1-j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5
21、);Sleep(s); else if(y 仁=y2)if(x2>x1)for(j=1;j<(x2-x1);j+)setfillcolor(RGB(0,0,0);recta ngle(x1+j-l,y1+w,x1+j+l,y1-w);clearrecta ngle(x1+j-l-1,y1+w,x1+j+l-1,y1-w);setl in ecolor(RED);lin e(x1+j,y1,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1+j,y1);if(j%2=0)setfillcolor(RGB(255,0,255);circle(x2,y2
22、,5);Sleep(s);if(x2<x1)for(j=1;j<(x1-x2);j+)setfillcolor(RGB(0,0,0);rectan gle(x1-j_l,y1+w,x1-j+l,y1_w);clearrecta ngle(x1-j-l-1,y1+w,x1-j+l-1,y1-w);setl in ecolor(RED);lin e(x1-j,y1,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1-j,y1);if(j%2=0)setfillcolor(RGB(255,0,255); circle(x2,y2,5);Sleep(s);
23、else if(x 仁=x2)if(y2>y1)for(j=1;j<(y2-y1);j+)setfillcolor(BLUE);recta ngle(x1-l,y1+j+w,x1+l,y1+j-w);setfillcolor(WHITE);recta ngle(x1,y1+j+w-1,x1+1,y1+j-1-w);clearrecta ngle(x1-l-1,y1+(j-1)+w,x1+l-1,y1+(j-1)-w);setl in ecolor(RED);lin e(x1,y1+j,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1,y1+j);
24、if(j%2=0)setfillcolor(RGB(255,255,0);circle(x2,y2,5);Sleep(s); if(y2<y1)for(j=1;j<(y1-y2);j+)setfillcolor(BLUE);rectan gle(x1_l,y1-j+w,x1+l,y1-j_w); setfillcolor(WHITE);recta ngle(x1,y1-j+w-1,x1+1,y1-j-1-w);clearrecta ngle(x1-l-1,y1-(j-1)+w,x1+l-1,y1-(j-1)-w); setl in ecolor(RED);lin e(x1,y1-j,x2,y2);setli necolor(GREEN);lin e(x1,y1,x1,y1-j);if(j%2=0)setfill
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中物理第1章電磁感應(yīng)第4節(jié)法拉第電磁感應(yīng)定律學(xué)案粵教版選修3-2
- 2024-2025學(xué)年新教材高中地理第六章自然災(zāi)害6.1.1旱澇災(zāi)害練習(xí)含解析新人教版必修第一冊(cè)
- 聲樂團(tuán)申請(qǐng)書
- 2025年度農(nóng)業(yè)科技實(shí)習(xí)生勞動(dòng)合同
- 2025年度地質(zhì)災(zāi)害防治土建設(shè)計(jì)合同
- 大學(xué)生村官解聘申請(qǐng)書
- 加入演講社團(tuán)的申請(qǐng)書
- 用戶體驗(yàn)設(shè)計(jì)提升產(chǎn)品競(jìng)爭(zhēng)力的關(guān)鍵
- 互換性與技術(shù)測(cè)量知到智慧樹章節(jié)測(cè)試課后答案2024年秋山東理工大學(xué)
- 現(xiàn)代企業(yè)中的社會(huì)責(zé)任與綠色家政實(shí)踐
- 四川省自貢市2024-2025學(xué)年上學(xué)期八年級(jí)英語(yǔ)期末試題(含答案無聽力音頻及原文)
- 2025年生物安全年度工作計(jì)劃
- 人教版數(shù)學(xué)六年級(jí)下冊(cè)全冊(cè)核心素養(yǎng)目標(biāo)教學(xué)設(shè)計(jì)
- 通用電子嘉賓禮薄
- 視頻號(hào)運(yùn)營(yíng)方案
- 《深化新時(shí)代教育評(píng)價(jià)改革總體方案》學(xué)習(xí)解讀
- (研究生)商業(yè)倫理與會(huì)計(jì)職業(yè)道德ppt教學(xué)課件(完整版)
- 中醫(yī)學(xué)課件:第三章 藏象學(xué)說
- 山西省煤炭運(yùn)銷集團(tuán)有限公司王家?guī)X煤礦井筒工程施工組織設(shè)計(jì)
- 新概念英語(yǔ)第三冊(cè)課后習(xí)題答案詳解
- 有機(jī)化學(xué)共振論
評(píng)論
0/150
提交評(píng)論