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

📄 line.c.svn-base

📁 采用网格地图SLAM算法
💻 SVN-BASE
字号:
#include "map2d.h"voidgrid_line_core( logtools_ivector2_t start, logtools_ivector2_t end,		logtools_grid_line_t *line ){  int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;  int cnt = 0;  dx = abs(end.x-start.x); dy = abs(end.y-start.y);    if (dy <= dx) {    d = 2*dy - dx; incr1 = 2 * dy; incr2 = 2 * (dy - dx);    if (start.x > end.x) {      x = end.x; y = end.y;      ydirflag = (-1);      xend = start.x;    } else {      x = start.x; y = start.y;      ydirflag = 1;      xend = end.x;    }    line->grid[cnt].x=x;    line->grid[cnt].y=y;    cnt++;    if (((end.y - start.y) * ydirflag) > 0) {      while (x < xend) {	x++;	if (d <0) {	  d+=incr1;	} else {	  y++; d+=incr2;	}	line->grid[cnt].x=x;	line->grid[cnt].y=y;	cnt++;      }    } else {      while (x < xend) {	x++;	if (d <0) {	  d+=incr1;	} else {	  y--; d+=incr2;	}	line->grid[cnt].x=x;	line->grid[cnt].y=y;	cnt++;      }    }		  } else {    d = 2*dx - dy;    incr1 = 2*dx; incr2 = 2 * (dx - dy);    if (start.y > end.y) {      y = end.y; x = end.x;      yend = start.y;      xdirflag = (-1);    } else {      y = start.y; x = start.x;      yend = end.y;      xdirflag = 1;    }    line->grid[cnt].x=x;    line->grid[cnt].y=y;    cnt++;    if (((end.x - start.x) * xdirflag) > 0) {      while (y < yend) {	y++;	if (d <0) {	  d+=incr1;	} else {	  x++; d+=incr2;	}	line->grid[cnt].x=x;	line->grid[cnt].y=y;	cnt++;      }    } else {      while (y < yend) {	y++;	if (d <0) {	  d+=incr1;	} else {	  x--; d+=incr2;	}	line->grid[cnt].x=x;	line->grid[cnt].y=y;	cnt++;      }    }  }  line->numgrids = cnt;}voidgrid_line( logtools_ivector2_t start, logtools_ivector2_t end,	   logtools_grid_line_t *line ) {  int i,j;  int half;  logtools_ivector2_t v;  grid_line_core( start, end, line );  if ( start.x!=line->grid[0].x ||       start.y!=line->grid[0].y ) {    half = line->numgrids/2;    for (i=0,j=line->numgrids - 1;i<half; i++,j--) {      v = line->grid[i];      line->grid[i] = line->grid[j];      line->grid[j] = v;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -