⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manhattan.cpp

📁 These mobility generator tools are used to generate a rich set of mobility scenarios used to evalua
💻 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 + -