📄 manhattan.cpp
字号:
//PARAMETER NEEDS TO BE MODIFIED:
//1. manhattan.h file -- NODE_NUM;
//2. manhattan.cpp file -- file list name
//3. manhattan.h file -- VMAX,VMIN,ACCELERATION
#include "map.h"
#include "node.h"
#include "manhattan.h"
class Map mymap;
class Node *mynode;
void main()
{
int global_clock=0;
int i,j,k;
FILE *fp;
int m;
int input_d; float input_f;
char map_name[20],trace_name[20];
for(i=0;i<100;i++)
new_random1();
printf("***********************************************************\n");
printf("*Welcome to the Manhattan Mobility Generator by agroup@USC*\n");
printf("***********************************************************\n\n");
printf("input Number of Node:\n");
scanf("%d",&input_d);
NODE_NUM = input_d;
printf("input Maximum Allowed Velocity:\n");
scanf("%f",&input_f);
VMAX = input_f;
printf("input Minimum Allowed Velocity:\n");
scanf("%f",&input_f);
VMIN = input_f;
printf("input the Acceleration Speed:\n");
scanf("%f",&input_f);
ACCELERATION = input_f;
printf("input the Filename of the map:\n");
scanf("%s", map_name);
printf("input the Filename of the Trace Output File:\n");
scanf("%s", trace_name);
mynode = new class Node[NODE_NUM];
mymap.map_read(map_name);
fp = fopen(trace_name,"w");
if(fp == NULL)
{ printf("Error opening output file!\n");
exit(-1); }
for(i=0;i<NODE_NUM;i++)
{
mynode[i].initialize(i,&mymap);
//mynode[i].show_trace (0);
}
for(i=0;i<NODE_NUM;i++)
mynode[i].save_file(fp,0,0);
for(i=1;i<SIMULATION_TIME;i++)
for(j=0;j<NODE_NUM;j++)
{
global_clock=i;
mynode[j].update(&mymap,global_clock);
//mynode[j].show_trace(global_clock);
}
for(k=0; k<SIMULATION_TIME;k++)
for(i=0;i<NODE_NUM;i++)
for(j=i+1;j<NODE_NUM;j++)
if( getmy_distance(mynode[i].x_array[k],mynode[i].y_array[k],
mynode[j].x_array[k],mynode[j].y_array[k]) < 0.01 )
{
printf("TOO close: t=%d, i=%d <%f,%f>, j=%d <%f,%f>\n",
k,i,mynode[i].x_array[k],mynode[i].y_array[k],
j,mynode[j].x_array[k],mynode[j].y_array[k]);
if( abs(mynode[i].x_array[k]-mynode[j].x_array[k]) <= 0.000001
&& mynode[i].y_array[k] >= mynode[j].y_array[k] )
mynode[i].y_array[k] += 0.2;
else if ( abs(mynode[i].x_array[k]-mynode[j].x_array[k]) <= 0.000001
&& mynode[i].y_array[k] < mynode[j].y_array[k] )
mynode[j].y_array[k] += 0.2;
else if ( abs(mynode[i].y_array[k]-mynode[j].y_array[k]) <= 0.000001
&& mynode[i].x_array[k] >= mynode[j].x_array[k] )
mynode[i].x_array[k] += 0.2;
else if ( abs(mynode[i].y_array[k]-mynode[j].y_array[k]) <= 0.000001
&& mynode[i].x_array[k] < mynode[j].x_array[k] )
mynode[j].x_array[k] += 0.2;
}
for(k=0; k<SIMULATION_TIME;k++)
for(i=0;i<NODE_NUM;i++)
for(j=i+1;j<NODE_NUM;j++)
if( getmy_distance(mynode[i].x_array[k],mynode[i].y_array[k],
mynode[j].x_array[k],mynode[j].y_array[k]) < 0.01 )
{
printf("STILL TOO close: t=%d, i=%d <%f,%f>, j=%d <%f,%f>\n",
k,i,mynode[i].x_array[k],mynode[i].y_array[k],
j,mynode[j].x_array[k],mynode[j].y_array[k]);
}
for(j=SIMULATION_TIME-1;j>=0;j--)
for(i=0;i<NODE_NUM;i++)
mynode[i].save_file(fp,1,j);
fclose(fp);
delete [] mynode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -