实验室进度记录之网格化场景合并路径
来源:互联网 发布:千兆网络用什么网线 编辑:程序博客网 时间:2024/06/06 05:04
在获得场景中人群运动轨迹之后,往往会将场景进行网格化,网格化的目的有两个,一个是为了合并路径,另一个是为了强化学习挑选目标点。这里只记录使用matlab程序将得到的路径网格化。具体程序如下:
clear;%读路径for f=1:1:1szBuffer = sprintf('3door.txt'); f1=fopen(szBuffer);cla;i=1;frame=1;y=1;while 1 nextline = fgetl(f1); %读第一行 if ~isstr(nextline), break, end %读到最后跳出 % disp(nextline);%这行可以不要 if mod(i,161)==0 frame=frame+1; i=1; end a = sscanf(nextline, '%f %f'); %disp(a); datax(frame,i)=round(a(1)); datay(frame,i)=round(a(2)); if(mod(datax(frame,i),10)>=5) gridx(frame,i)=datax(frame,i)-mod(datax(frame,i),10)+10; else gridx(frame,i) = datax(frame,i)-mod(datax(frame,i),10); end if(mod(datay(frame,i),10)>=5) gridy(frame,i)=datay(frame,i)-mod(datay(frame,i),10)+10; else gridy(frame,i) = datay(frame,i)-mod(datay(frame,i),10); end i=i+1;endfclose(f1);hasexit = zeros(302);for num = 1:1:160 %不去重 x=gridx(:,num); y=gridy(:,num); i=1; for i=1:1:length(x)-2 a=dist(x(i),y(i),x(i+1),y(i+1)); b=dist(x(i+1),y(i+1),x(i+2),y(i+2)); c=dist(x(i),y(i),x(i+2),y(i+2)); if(a*a+b*b==c*c&&x(i)==x(i+1)||y(i)==y(i+1)&&rand(1)>0.7) x(i+1)=x(i); y(i+1)=y(i); end end plot(x,y,'r-'); hold on;endhold on;%第二组% szBuffer = sprintf('3door2.txt'); % f1=fopen(szBuffer);% i=1;% frame=1;y=1;% while 1% nextline = fgetl(f1); %读第一行 % if ~isstr(nextline), break, end %读到最后跳出 % % disp(nextline);%这行可以不要 % if mod(i,161)==0% frame=frame+1;% i=1;% end% a = sscanf(nextline, '%f %f');% %disp(a);% datax(frame,i)=round(a(1));% datay(frame,i)=round(a(2));% if(mod(datax(frame,i),10)>=5)% gridx(frame,i)=datax(frame,i)-mod(datax(frame,i),10)+10;% else gridx(frame,i) = datax(frame,i)-mod(datax(frame,i),10);% end% if(mod(datay(frame,i),10)>=5)% gridy(frame,i)=datay(frame,i)-mod(datay(frame,i),10)+10;% else gridy(frame,i) = datay(frame,i)-mod(datay(frame,i),10);% end% i=i+1;% end% fclose(f1);% hasexit = zeros(302);% for num = 1:1:160% %不去重 % x=gridx(:,num);% y=gridy(:,num);% i=1;% % for i=1:1:length(x)-2% a=dist(x(i),y(i),x(i+1),y(i+1));% b=dist(x(i+1),y(i+1),x(i+2),y(i+2));% c=dist(x(i),y(i),x(i+2),y(i+2));% if(a*a+b*b==c*c&&x(i)==x(i+1)||y(i)==y(i+1)&&rand(1)>0.7)% x(i+1)=x(i);% y(i+1)=y(i);% end% end% if(rand(1)>0.5)% plot(x,y,'r-');% end% hold on;% end%第三组szBuffer = sprintf('3door3.txt'); f1=fopen(szBuffer);i=1;frame=1;y=1;while 1 nextline = fgetl(f1); %读第一行 if ~isstr(nextline), break, end %读到最后跳出 % disp(nextline);%这行可以不要 if mod(i,201)==0 frame=frame+1; i=1; end a = sscanf(nextline, '%f %f'); %disp(a); datax(frame,i)=round(a(1)); datay(frame,i)=round(a(2)); if(mod(datax(frame,i),10)>=5) gridx(frame,i)=datax(frame,i)-mod(datax(frame,i),10)+10; else gridx(frame,i) = datax(frame,i)-mod(datax(frame,i),10); end if(mod(datay(frame,i),10)>=5) gridy(frame,i)=datay(frame,i)-mod(datay(frame,i),10)+10; else gridy(frame,i) = datay(frame,i)-mod(datay(frame,i),10); end i=i+1;endfclose(f1);hasexit = zeros(302);for num = 1:1:160 %不去重 x=gridx(:,num); y=gridy(:,num); i=1; for i=1:1:length(x)-2 a=dist(x(i),y(i),x(i+1),y(i+1)); b=dist(x(i+1),y(i+1),x(i+2),y(i+2)); c=dist(x(i),y(i),x(i+2),y(i+2)); if(a*a+b*b==c*c&&x(i)==x(i+1)||y(i)==y(i+1)&&rand(1)>0.7) x(i+1)=x(i); y(i+1)=y(i); end end plot(x,y,'r-'); hold on;end%for wall--------------- LEFT = -10.0; RIGHT = 310.0; TOP = 210.0; BOTTOM = -10.0;%------------------------- %障碍物文件inBuffer = sprintf('obstacle/3door.txt');%打开障碍物文件f2=fopen(inBuffer);i=1;nextline = fgetl(f2)%读第一行 if ~isstr(nextline), break, end %读到最后跳出 disp(nextline);%这行可以不要 a = sscanf(nextline, '%d');%读取数据,根据你自己的需要改 for num=1:1:a nextline = fgetl(f2); %读第一行 if ~isstr(nextline), break, end %读到最后跳出 b = sscanf(nextline, '%f %f'); data_obj(i) = b(1); data_obj(i+1) = b(2); i = i+2;endnextline = fgetl(f2); %读第一行 a = sscanf(nextline, '%d');%读取数据,根据你自己的需要改。障碍物个数for num=1:1:a % nextline = fgetl(f2); %读第一行 if ~isstr(nextline), break, end %读到最后跳出 vertnum = sscanf(nextline, '%d ');%障碍物顶点个数 %读取顶点坐标,并画出障碍物 for i=2:1:vertnum(1)+1 b(1) = vertnum(i)+1; t = i+1; if t> vertnum(1)+1 t = 2; end b(2) = vertnum(t)+1; plot([data_obj(2*b(1)-1) data_obj(2*b(2)-1)],[data_obj(2*b(1)) data_obj(2*b(2))],'Color','k','LineWidth',2); set(gcf,'Position',[500 200 500 500]) set(gca,'Position',[.13 .17 .80 .74]); axis([LEFT RIGHT BOTTOM TOP]); hold on; end endfclose(f2);szBuffer = sprintf('./jepg_emotion/%02d.jpeg',frame);print(gcf,'-djpeg',szBuffer);end
得到的效果如下图所示:
阅读全文
0 0
- 实验室进度记录之网格化场景合并路径
- 实验室进度记录之matlab描绘提取到的路径
- Unity3D优化之合并网格
- Unity换装之合并网格
- 场景切换之进度条显示进度百分比
- Unity3D性能优化之合并网格
- Unity3D优化之合并网格 整理
- 网格路径
- HDFS实际应用场景之文件合并
- jQuery EasyUI使用教程之合并数据网格的单元格
- Mesh.CombineMeshes 合并网格
- 网格合并,减少DrawCall
- Unity网格合并
- Unity -网格合并
- Unity3d网格合并
- 合并Mesh网格
- Unity -网格合并
- Unity 网格合并
- spring的PropertyPlaceholderConfigurer 指向工程外路径
- Deep Learning 学习笔记整理系列之六
- Android USB 通信(Socket 详解)
- java面试集锦
- linux iptables 官方中文教程地址
- 实验室进度记录之网格化场景合并路径
- C语言如何 计算程序运行时间?
- 文件实现上传
- 单例模式SingletonPattern
- AS3 ByteArray
- UserCF和ItemCF 比较
- Hudson-3.3.2-安全配置
- ps查看线程
- MySQL环境配置