亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gridkeeper.cc

?? NS2網絡仿真軟件是目前最為流行的網絡仿真模擬軟件
?? CC
字號:
/* * An optimizer for some wireless simulations * * Helps most when some nodes are mostly stationary. * We hope you can share your experience with the gridkeeper with us. * * Ported from Sun's mobility code */#include "gridkeeper.h"//#include <sys/param.h> /* For MIN/MAX */static double d2(double x1, double x2, double y1, double y2){  return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}GridHandler::GridHandler(){}void GridHandler::handle(Event *e){  MoveEvent *me = (MoveEvent *)e;  MobileNode **pptr;  MobileNode * token_ = me->token_;  if ((pptr = me->leave_)) {    while (*pptr) {      if ((*pptr)->address() == token_->address()) break;      pptr = &((*pptr)->next());    }    if (!(*pptr)) abort();    else {      *pptr = token_->next();      token_->next() = 0;    }      }  if ((pptr = me->enter_)) {    if (token_->next()) abort();  // can't be in more than one grid    token_->next() = *pptr;    *pptr = token_;  }  delete me;  // dump info in the gridkeeper for debug only  // dump();}GridKeeper* GridKeeper::instance_; static class GridKeeperClass : public TclClass {public:  GridKeeperClass() : TclClass("GridKeeper") {}  TclObject* create(int, const char*const*) {      return (new GridKeeper);  }} class_grid_keeper;GridKeeper::GridKeeper() : size_(0),grid_(NULL), dim_x_(0), dim_y_(0){  gh_ = new GridHandler();}GridKeeper::~GridKeeper(){  int i;  for (i = 0; i <= dim_x_; i++) {    delete [] grid_[i];  }  delete [] grid_;}int GridKeeper::command(int argc, const char*const* argv){  int i, grid_x, grid_y;  Tcl& tcl = Tcl::instance();  MobileNode *mn;  if (argc == 2) {    if (strcmp(argv[1], "dump") == 0) {      dump();      return (TCL_OK);    }  }  if (argc == 3) {    if (strcmp(argv[1], "addnode") == 0) {	mn = (MobileNode *)TclObject::lookup(argv[2]);	grid_x = aligngrid((int)mn->X(), dim_x_);        grid_y = aligngrid((int)mn->Y(), dim_y_);	mn->next() = grid_[grid_x][grid_y];	grid_[grid_x][grid_y] = mn;	size_++;        return (TCL_OK);    }  }  if (argc == 4 && strcmp(argv[1], "dimension") == 0) {    if (instance_ == 0) instance_ = this;    dim_x_ = strtol(argv[2], (char**)0, 0);    dim_y_ = strtol(argv[3], (char**)0, 0);    if (dim_x_ <= 0 || dim_y_ <= 0) {      tcl.result("illegal grid dimension");      return (TCL_ERROR);    }    grid_ = new MobileNode **[dim_x_];    for (i = 0; i < dim_x_; i++) {      grid_[i] = new MobileNode *[dim_y_];      bzero((void *)grid_[i], sizeof(MobileNode *)*dim_y_);    }    return (TCL_OK);  }  return (TclObject::command(argc, argv));}void GridKeeper::new_moves(MobileNode *mn){  double x = mn->X(), y = mn->Y();   double ss = mn->speed();  double vx = (mn->dX())*ss, vy = (mn->dY())*ss;  double endx, endy, pother, tm;  int i, j, endi, gother, grid_x, grid_y;  MoveEvent *me;  Scheduler& s = Scheduler::instance();  endx = mn->destX();  endy = mn->destY();  if (vx > 0) {    endi = MIN(dim_x_-1, (int)endx);    for (i = (int)x+1; i <= endi; i++) {      tm = (i-x)/vx;      pother = vy*tm + y;      j = (int)pother;      me = new MoveEvent;      if (j == pother && j != 0 && j != dim_y_) {	if (vy > 0) gother = j - 1;	else if (vy < 0) gother = j + 1;	else gother = j;      }      else {	gother = j;      }      me->leave_ = &(grid_[aligngrid(i-1, dim_x_)][aligngrid(gother, dim_y_)]);      me->grid_x_ = grid_x = aligngrid(i, dim_x_);      me->grid_y_ = grid_y = aligngrid(j, dim_y_);      me->enter_ = &(grid_[grid_x][grid_y]);      me->token_ = mn;      s.schedule(gh_, me, tm);    }  }  else if (vx < 0) {    endi = (int)endx;    for (i = (int)x; i > endi; i--) {      if (i == dim_x_) continue;      tm = (i-x)/vx;      pother = vy*tm + y;      j = (int)pother;      me = new MoveEvent;      if (j == pother && j != 0 && j != dim_y_) {	if (vy > 0) gother = j - 1;	else if (vy < 0) gother = j + 1;	else gother = j;      }      else {	gother = j;      }      me->leave_ = &grid_[aligngrid(i, dim_x_)][aligngrid(gother, dim_y_)];      me->grid_x_ = grid_x = aligngrid(i-1, dim_x_);      me->grid_y_ = grid_y = aligngrid(j, dim_y_);      me->enter_ = &grid_[grid_x][grid_y];      me->token_ = mn;      s.schedule(gh_, me, tm);    }  }  if (vy > 0) {    endi = MIN(dim_y_-1, (int)endy);    for (j = (int)y+1; j <= endi; j++) {      tm = (j-y)/vy;      pother = vx*tm + x;      i = (int)pother;      me = new MoveEvent;      if (i == pother && i != 0 && i != dim_x_ && vx != 0) continue;      me->leave_ = &grid_[aligngrid(i, dim_x_)][aligngrid(j-1, dim_y_)];      me->grid_x_ = grid_x = aligngrid(i, dim_x_);      me->grid_y_ = grid_y = aligngrid(j, dim_y_);      me->enter_ = &grid_[grid_x][grid_y];      me->token_ = mn;      s.schedule(gh_, me, tm);    }  }  else if (vy < 0) {    endi = (int)endy;    for (j = (int)y; j > endi; j--) {      if (j == dim_y_) continue;      tm = (j-y)/vy;      pother = vx*tm + x;      i = (int)pother;      me = new MoveEvent;      if (i == pother && i != 0 && i != dim_x_ && vx != 0) continue;      me->leave_ = &grid_[aligngrid(i, dim_x_)][aligngrid(j, dim_y_)];      me->grid_x_ = grid_x = aligngrid(i, dim_x_);      me->grid_y_ = grid_y = aligngrid(j-1, dim_y_);      me->enter_ = &grid_[grid_x][grid_y];      me->token_ = mn;      s.schedule(gh_, me, tm);    }  }}int GridKeeper::get_neighbors(MobileNode* mn, MobileNode **output){  int grid_x, grid_y, index = 0, i, j, ulx, uly, lly, adj;  MobileNode *pgd;  double mnx, mny, mnr, sqmnr;    mn->update_position();  mnx = mn->X();  mny = mn->Y();  grid_x = aligngrid((int)mn->X(), dim_x_);  grid_y = aligngrid((int)mn->Y(), dim_y_);  mnr = mn->radius();  sqmnr = mnr * mnr;  adj = (int)ceil(mnr);  ulx = MIN(dim_x_-1, grid_x + adj);  uly = MIN(dim_y_-1, grid_y + adj);  lly = MAX(0, grid_y - adj);  for (i = MAX(0, grid_x - adj); i <= ulx; i++) {    for (j = lly; j <= uly; j++) {      for (pgd = grid_[i][j]; pgd != 0; pgd = pgd->next()) {	if (mn->address() == pgd->address()) 		continue;	pgd->update_position();	if (d2(pgd->X(), mnx, pgd->Y(), mny) < sqmnr)	 output[index++] = pgd;      }    }  }  return index;}void GridKeeper::dump(){    int i,j;    MobileNode *pgd;    for (i = 0; i< dim_x_; i++) {      for (j = 0; j < dim_y_; j++) {	if (grid_[i][j] == 0) continue;	printf("grid[%d][%d]: ",i,j);	for (pgd = grid_[i][j]; pgd != 0; pgd = pgd->next()) {	  printf("%d ",pgd->address());	}	printf("\n");      }    }    printf("-------------------------------\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产77777| 乱一区二区av| 久久国产成人午夜av影院| 日韩欧美第一区| 亚洲乱码国产乱码精品精小说| 国产麻豆精品视频| 一区二区三区日韩精品视频| 51精品秘密在线观看| 国产黄人亚洲片| 精品国产免费久久| 99久久综合色| 久久免费的精品国产v∧| 国产真实乱子伦精品视频| 亚洲三级电影全部在线观看高清| 欧美日韩激情一区二区三区| 国产精品中文字幕日韩精品| 亚洲一二三四在线观看| 国产亚洲一区二区三区| 欧美丝袜丝nylons| 蜜桃精品视频在线观看| 亚洲欧美日本韩国| 亚洲精品一区二区在线观看| 欧美精品一卡二卡| 一本到高清视频免费精品| 国产在线观看免费一区| 亚洲成人免费在线| www激情久久| 国产精品系列在线播放| 久久电影网站中文字幕| 日韩av一区二区在线影视| 亚洲欧美日韩国产中文在线| 国产精品三级在线观看| 欧美mv日韩mv国产| 成人性生交大合| 中文字幕在线不卡一区二区三区 | 国产一区二区三区四区在线观看| 亚洲色大成网站www久久九九| 久久色中文字幕| 国产一区二区免费视频| 一区二区三区在线视频观看58| 国产精品乱人伦一区二区| 久久久91精品国产一区二区精品| 欧美成人一区二区三区片免费| 7777精品伊人久久久大香线蕉经典版下载 | 99国产精品久久久久久久久久 | 亚洲制服丝袜av| 日韩精品一区二区三区视频| 欧美日本在线看| 久久精品国产亚洲a| 麻豆精品在线看| 亚洲国产成人私人影院tom| 欧美在线免费播放| 在线观看亚洲a| 国产精品一区二区黑丝| 国产成人8x视频一区二区| 国产传媒欧美日韩成人| 成人国产精品免费观看动漫| av一区二区三区黑人| 人妖欧美一区二区| 久久精品国产99| 亚洲综合视频网| 婷婷一区二区三区| 一级特黄大欧美久久久| 欧美国产成人在线| 亚洲桃色在线一区| 91精品国产综合久久小美女| 337p亚洲精品色噜噜噜| 精品日韩一区二区三区免费视频| 国产亚洲欧美激情| 亚洲日本一区二区三区| 午夜视黄欧洲亚洲| 伦理电影国产精品| 九一九一国产精品| 91片黄在线观看| 成人视屏免费看| 青青草成人在线观看| 国产成人在线视频网站| 色婷婷综合久久久久中文 | 亚洲一区二区三区影院| 亚洲精品视频免费看| 日韩精品亚洲专区| 粉嫩av一区二区三区| 欧洲精品在线观看| 久久一夜天堂av一区二区三区| 亚洲人成网站影音先锋播放| 性欧美疯狂xxxxbbbb| 免费成人你懂的| 日本不卡高清视频| 91网站黄www| 99久久久免费精品国产一区二区| 欧美女孩性生活视频| 日本一区二区三区四区| 天堂av在线一区| 国产精品嫩草影院av蜜臀| 日韩国产在线一| 亚洲r级在线视频| 亚洲成人免费影院| 成人app网站| 99精品热视频| 国产成人亚洲精品青草天美| 欧美久久久久免费| 亚洲日本乱码在线观看| 国产在线不卡一卡二卡三卡四卡| 欧美群妇大交群中文字幕| 综合色中文字幕| 亚洲图片你懂的| 国产肉丝袜一区二区| 免费av成人在线| 国产激情一区二区三区四区| 欧美一区二区啪啪| 亚洲高清视频在线| 色久优优欧美色久优优| 欧美国产激情二区三区| 天天综合天天做天天综合| 欧美在线观看禁18| 一区二区三区国产精品| 91同城在线观看| 5566中文字幕一区二区电影| 尤物在线观看一区| 99麻豆久久久国产精品免费| 日韩欧美激情四射| 免费久久精品视频| 精品美女一区二区| 国产一区美女在线| 欧美激情艳妇裸体舞| 成人av小说网| 欧美久久一二区| 欧美三级电影一区| 天堂在线亚洲视频| 日韩三区在线观看| 精品一区二区三区久久久| 欧美成人精品3d动漫h| 国内精品第一页| 欧美久久免费观看| 久久久久久免费网| wwww国产精品欧美| 欧美色精品在线视频| 国产精品视频九色porn| 蜜臀av性久久久久蜜臀aⅴ流畅| 91丨九色丨蝌蚪富婆spa| 一区二区三区中文在线观看| 狂野欧美性猛交blacked| 久久久国产精品午夜一区ai换脸| 2019国产精品| 国产精品午夜电影| gogo大胆日本视频一区| 亚洲午夜日本在线观看| 国产精品人人做人人爽人人添| 亚洲图片欧美一区| 亚洲一区二区3| 国产成人亚洲综合a∨婷婷| 综合久久给合久久狠狠狠97色| 欧美三级韩国三级日本一级| 久久99精品国产麻豆不卡| 国产亚洲女人久久久久毛片| 国产精品伊人色| 日韩免费高清视频| 色香蕉成人二区免费| 精品综合免费视频观看| 一区二区三区在线观看动漫| 欧美成人a∨高清免费观看| 99精品久久只有精品| 一区二区三区四区亚洲| 亚洲精品一区二区三区在线观看| 99久久亚洲一区二区三区青草| 青娱乐精品在线视频| 亚洲女爱视频在线| 精品乱人伦一区二区三区| 91黄色在线观看| 中文字幕欧美激情| 91精品国产综合久久香蕉麻豆| av在线免费不卡| 亚洲黄色性网站| 91福利在线导航| 一区二区三区日韩欧美精品| 欧美精品精品一区| 日本黄色一区二区| 成人国产精品免费观看视频| 极品尤物av久久免费看| 视频一区在线播放| 亚洲一区视频在线| 国产精品青草综合久久久久99| 在线欧美日韩国产| 成人av网站在线观看免费| 国产专区欧美精品| 国产专区欧美精品| 极品美女销魂一区二区三区免费| 丝袜a∨在线一区二区三区不卡| 国产精品乱码一区二三区小蝌蚪| 欧美日韩一区高清| 一本大道久久a久久综合 | 在线观看亚洲a| 午夜精品久久久久久久99水蜜桃| **网站欧美大片在线观看| 精品国产乱码久久| 欧美午夜片在线观看| 欧美视频在线一区二区三区 | 国产高清不卡一区| 国产一区二区三区高清播放| 精品在线一区二区三区|