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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C++AGV 路径规划与运行仿真程序Word格式文档下载.docx

1、 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=mVexsi.x; return x;gety(int n2) int y=0; if(n2=mVexsi.num) y=mVexsi.y; return y;void CFixedMap:Input() int panju; char fname10=map2.txt coutpanju; i

2、f(panju=2) coutfname; ifstream file(fname); char use1100; char use2100; char use3100; char use4100; /use数组用来储存提示信息。 fileuse1; /端点个数use2;mEdgNum; /边数use3;i+) /输入所有点的信息 filemVexsi.nummVexsi.xmVexsi.y;use4; for(i=0;i+) /输入连通点编号combi.num1combi.num2; file.close();ShowMap() initgraph(800,600,SHOWCONSOLE|

3、NOCLOSE); /初始化绘图环境 setbkcolor(WHITE); /设置背景色 cleardevice(); /用背景色清空屏幕 setfillcolor(BLACK); /设置填充色 /画顶点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);

4、cpi.x1=getx(combi.num1); cpi.y1=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

5、MaptoGraph(); void Dijstra(); void Putpath();void CPathPlan:MaptoGraph() rnum=0; int a,b,x,y; for(int j=0;jj+) if(i=j) mMatrixij=0; else mMatrixij=maxD; 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); mMatrixba=sqrt(x*x+y*y);Dijstra(

6、)输入起点:v0; v0-; int sMAX; int v; int i; int j; int w; double min; for(v=0;vv+) /初始化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;i+) /假设由一个中转点到达会近些,验证。再假设由两个中转点到达会近些,验证。穷举 min=maxD;

7、 for(w=0;ww+) /找一个最近到的点,下标装入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; if(sj=0 & (min+mMatrixvjdistj) /如果多经过一个点v到点j的距离更短,更新 distj=min+mMatrixvj; pathj=v; /点的序号 Putpath() int opp20; int z; int i=0;输入终点:z; z-; int next

8、; ofstream file2(fops.txt); if(distz z!=v0) /如果有路径 oppi+=mVexsz.num; /终点 next=pathz; /第一个点 while(next! oppi+=mVexsnext.num; next=pathnext; /下一个点 oppi=mVexsv0.num; file2路径长度为:distzn /起点v0和最短路径 else if(z!=v0) /无路径mVexsz.num-mVexsv0.numno path for(int j=0;i+1; routej=oppi-j; file2路径为: for(j=0;i;routej

9、rnum=i+1;routei; file2.close();rnum; rpointsi.x=getx(routei); rpointsi.y=gety(routei); rpointsi.num=routei;class CAGV int speed; /AGV速度 int width; /AGV宽度 int length; /AGV长度 CAGV(); int getl(); int getw(); int gets();CAGV:CAGV()是否自动设置AGV信息?是,2: speed=8; width=6; length=6;输入AGV的长:length;输入AGV的宽:width;

10、输入AGV的速度(1-10):speed;int CAGV:getl() return length;getw() return width;gets() return speed;class CAGVShow:public CPathPlan,public CAGV#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&

11、y2y1) for(j=1;x2-x1; 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); 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(

12、x2y2(y2-y1); setfillcolor(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); line(x1,y1+j,x2,y2); line(x1,y1,x1,y1+j); if(y2(y1-y2); rectangle(x1-l,y1-j+w,x1+l,y1-j-w); rectangle(x1,y1-j+w-1,x1+1,

13、y1-j-1-w); clearrectangle(x1-l-1,y1-(j-1)+w,x1+l-1,y1-(j-1)-w); line(x1,y1-j,x2,y2); line(x1,y1,x1,y1-j);成功显示!n getch(); / 按任意键继续 closegraph(); / 关闭图形界面 void main() CAGVShow a; int panju; a.Input();多次演示? if(panju=1) for(int i=0;20; a.ShowMap(); a.MaptoGraph(); a.Dijstra(); a.Putpath(); a.show(); pan

14、ju=0; cout 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