ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:18.87KB ,
资源ID:3618082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3618082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++AGV 路径规划与运行仿真程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++AGV 路径规划与运行仿真程序.docx

1、C+AGV 路径规划与运行仿真程序C+AGV 路径规划与运行仿真程序程序代码#include#include#include #include#include#include#include#define MAX 100#define maxD 99999class CFixedMap struct Coordinate int x; int y; int num; ;/记录点的结构体 struct combp int x1,y1; int x2,y2; ;/连通点坐标 struct Combname int num1; int num2; ;/连通点名 public: int mVexNum

2、; / 顶点数 int mEdgNum; / 边数 double mMatrixMAXMAX; / 邻接矩阵 Combname combMAX; /连通点名 combp cpMAX; /连通点坐标 Coordinate mVexsMAX; / 顶点集合 int getx(int n1); int gety(int n2); void Input();/以文件方式输入地图信息 void ShowMap();/easyx显示地图;int CFixedMap:getx(int n1) int x=0; for(int i=0;imVexNum;i+) if(n1=mVexsi.num) x=mVex

3、si.x; return x;int CFixedMap:gety(int n2) int y=0; for(int i=0;imVexNum;i+) if(n2=mVexsi.num) y=mVexsi.y; return y;void CFixedMap:Input() int panju; char fname10=map2.txt; coutpanju; if(panju=2) coutfname; ifstream file(fname); char use1100; char use2100; char use3100; char use4100; /use数组用来储存提示信息。

4、fileuse1; filemVexNum; /端点个数 fileuse2; filemEdgNum; /边数 fileuse3; for(int i=0;imVexsi.nummVexsi.xmVexsi.y; fileuse4; for(i=0;icombi.num1combi.num2; file.close();/easyx显示地图void CFixedMap:ShowMap() initgraph(800,600,SHOWCONSOLE| NOCLOSE); /初始化绘图环境 setbkcolor(WHITE); /设置背景色 cleardevice(); /用背景色清空屏幕 set

5、fillcolor(BLACK); /设置填充色 /画顶点 for(int i=0;imVexNum;i+) fillcircle(mVexsi.x,mVexsi.y,5); settextcolor(BLACK); char sMAX; sprintf(s, %d, i+1); outtextxy(mVexsi.x-10,mVexsi.y-20,s); /给实际连通的顶点连线 setlinecolor(RGB(0,0,0); setlinestyle(PS_SOLID,6,NULL,0); for(i=0;imEdgNum;i+) cpi.x1=getx(combi.num1); cpi.y

6、1=gety(combi.num1); cpi.x2=getx(combi.num2); cpi.y2=gety(combi.num2); line(cpi.x1,cpi.y1,cpi.x2,cpi.y2); class CPathPlan:public CFixedMappublic: int pathMAX; /存放最后一个点 double distMAX; /存放路径距离 int v0; /起始点 int route40; /路径 int rnum; /路径顶点数 Coordinate rpointsMAX;/路径点集 void MaptoGraph(); void Dijstra();

7、 void Putpath();void CPathPlan:MaptoGraph() rnum=0; int a,b,x,y; for(int i=0;imVexNum;i+) for(int j=0;jmVexNum;j+) if(i=j) mMatrixij=0; else mMatrixij=maxD; for(i=0;imEdgNum;i+) if (combi.num1) a=combi.num1-1; b=combi.num2-1; x=mVexsa.x-mVexsb.x; y=mVexsa.y-mVexsb.y; mMatrixab=sqrt(x*x+y*y); mMatrix

8、ba=sqrt(x*x+y*y); void CPathPlan:Dijstra() coutv0; v0-; int sMAX; int v; int i; int j; int w; double min; for(v=0;vmVexNum;v+) /初始化S,dist,path sv=0; /0表示未求出最短路径 distv=mMatrixv0v; /开始时假定为最短路径 if(distvmaxD & v!=v0) pathv=v0; /直达情况 else pathv=-1; /无直达路径 distv0=0; /初始时v0属于s集,v0到v0路径最短 sv0=1; for(i=1;imV

9、exNum;i+) /假设由一个中转点到达会近些,验证。再假设由两个中转点到达会近些,验证。穷举 min=maxD; for(w=0;wmVexNum;w+) /找一个最近到的点,下标装入v if(sw=0 & distwmin) /点w不属于s集且离v0更近 v=w; /经点w中转 min=distw; sv=1; /将v并入S,由v0到达v点最短距离为min,假设由v0到v再由v到其余各点,更新当前最后一个点及距离 for(j=0;jmVexNum;j+) if(sj=0 & (min+mMatrixvjdistj) /如果多经过一个点v到点j的距离更短,更新 distj=min+mMat

10、rixvj; pathj=v; /点的序号 void CPathPlan:Putpath() int opp20; int z; int i=0; coutz; z-; int next; ofstream file2(fops.txt); if(distzmaxD & z!=v0) /如果有路径 oppi+=mVexsz.num; /终点 next=pathz; /第一个点 while(next!=v0) oppi+=mVexsnext.num; next=pathnext; /下一个点 oppi=mVexsv0.num; file2路径长度为:distzn; /起点v0和最短路径 else

11、 if(z!=v0) /无路径 file2mVexsz.num-mVexsv0.numno pathn; for(int j=0;ji+1;j+) routej=oppi-j; file2路径为:; for(j=0;ji;j+) file2routej; rnum=i+1; file2routei; file2.close(); for(i=0;irnum;i+) rpointsi.x=getx(routei); rpointsi.y=gety(routei); rpointsi.num=routei; class CAGV int speed; /AGV速度 int width; /AGV宽

12、度 int length; /AGV长度public: CAGV(); int getl(); int getw(); int gets();CAGV:CAGV() int panju; coutpanju; speed=8; width=6; length=6; if(panju=2) coutlength; coutwidth; coutspeed; int CAGV:getl() return length;int CAGV:getw() return width;int CAGV:gets() return speed;class CAGVShow:public CPathPlan,p

13、ublic 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; void show(); ;void CAGVShow:show() l=getl(); w=getw(); s=11-gets(); for(int o=0;ox1&y2y1) for(j=1;jx2-x1;j+) a=x1+j-l; b=y1+j*k+w; c=x1+j+l; d=y1+j*k-w; setfillcolor(RGB(0,0,0); rectangle(a,b,c,d); c

14、learrectangle(a-1,b-k,c,d-k); setlinecolor(RED); line(x1+j,y1+j*k,x2,y2); setlinecolor(GREEN); line(x1,y1,x1+j,y1+j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5); Sleep(s); if(x2x1&y2y1) for(j=1;jx1-x2;j+) a=x1-j-l; b=y1-j*k+w; c=x1-j+l; d=y1-j*k-w; setfillcolor(RGB(0,0,0); rectangle(a,

15、b,c,d); clearrectangle(a-1,b-k,c,d-k); setlinecolor(RED); line(x1-j,y1-j*k,x2,y2); setlinecolor(GREEN); line(x1,y1,x1-j,y1-j*k); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5); Sleep(s); if(x2y1) for(j=1;jx1&y2y1) for(j=1;jx1) for(j=1;j(x2-x1);j+) setfillcolor(RGB(0,0,0); rectangle(x1+j-l,y1

16、+w,x1+j+l,y1-w); clearrectangle(x1+j-l-1,y1+w,x1+j+l-1,y1-w); setlinecolor(RED); line(x1+j,y1,x2,y2); setlinecolor(GREEN); line(x1,y1,x1+j,y1); if(j%2=0) setfillcolor(RGB(255,0,255); circle(x2,y2,5); Sleep(s); if(x2x1) for(j=1;jy1) for(j=1;j(y2-y1);j+) setfillcolor(BLUE); rectangle(x1-l,y1+j+w,x1+l,

17、y1+j-w); setfillcolor(WHITE); rectangle(x1,y1+j+w-1,x1+1,y1+j-1-w); clearrectangle(x1-l-1,y1+(j-1)+w,x1+l-1,y1+(j-1)-w); setlinecolor(RED); line(x1,y1+j,x2,y2); setlinecolor(GREEN); line(x1,y1,x1,y1+j); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2,5); Sleep(s); if(y2y1) for(j=1;j(y1-y2);j+) s

18、etfillcolor(BLUE); rectangle(x1-l,y1-j+w,x1+l,y1-j-w); setfillcolor(WHITE); rectangle(x1,y1-j+w-1,x1+1,y1-j-1-w); clearrectangle(x1-l-1,y1-(j-1)+w,x1+l-1,y1-(j-1)-w); setlinecolor(RED); line(x1,y1-j,x2,y2); setlinecolor(GREEN); line(x1,y1,x1,y1-j); if(j%2=0) setfillcolor(RGB(255,255,0); circle(x2,y2

19、,5); Sleep(s); cout成功显示!n; getch(); / 按任意键继续 closegraph(); / 关闭图形界面 void main() CAGVShow a; int panju; a.Input(); coutpanju; if(panju=1) for(int i=0;i20;i+) a.ShowMap(); a.MaptoGraph(); a.Dijstra(); a.Putpath(); a.show(); panju=0; coutpanju; if(panju=1) break; else a.ShowMap(); a.MaptoGraph(); a.Dijstra(); a.Putpath(); a.show(); 相关文件/map2.txt点的个数(输入所有数据前请换行): 16连线条数:26依次输入所有点的编号,x,y坐标(用空格隔开):1 50 50 2 250 50 3 550 50 4 750 50 5 50 150 6 250 150 7 550 150 8 750 150 9 50 350 10 250 350 11 550 350 12 750 350 13 50 550 14 250 550 15 550 550 16 750 550输入所有互相连通的点的编号:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1