蜂窝网格算法
来源:互联网 发布:unity3d小游戏源码 编辑:程序博客网 时间:2024/04/27 22:01
平行状态蜂窝网格
根据网格上来的代码,修改成自己想要的坐标系。
#define CELL_BORDER (40) //六边形边长
#define GRID_WIDTH (CELL_BORDER*1.5f)
#define GRID_HEIGHT (CELL_BORDER*0.8660254f) // sqr(3)/2=0.8660254
#define TEMP_1 ((GRID_WIDTH*GRID_WIDTH - GRID_HEIGHT*GRID_HEIGHT)/2.f)
#define TEMP_2 ((GRID_WIDTH*GRID_WIDTH + GRID_HEIGHT*GRID_HEIGHT)/2.f)
//2d坐标转网格坐标
void GetCell(int xPos, int yPos, int& cell_x, int& cell_y)
{
cell_x = (int)(xPos / GRID_WIDTH);
float x = xPos - cell_x*GRID_WIDTH;
cell_y = (int)(yPos / (GRID_HEIGHT));
float y = yPos - cell_y*(GRID_HEIGHT);
if((cell_x + cell_y) & 1)
{//奇数
if(x*GRID_WIDTH - y*GRID_HEIGHT > TEMP_1)
cell_x++;
}
else
{
if(x*GRID_WIDTH + y*GRID_HEIGHT > TEMP_2)
cell_x++;
}
cell_y = (int)((cell_y + (1 - (cell_x & 1))) / 2);
}
//网格坐标转2d坐标中心点
void GetCenterPoint(int cell_x, int cell_y, int &xPos, int &yPos)
{
yPos = cell_y * GRID_HEIGHT * 2 + GRID_HEIGHT* (cell_x & 1);
xPos = cell_x * GRID_WIDTH;
}
//2d坐标中心点取六边形的六个端点
void GetCellPoints(int cellx, int celly, int a, POINT *lpPoints)
{
if(lpPoints == NULL) return;
//平
lpPoints[0].x = cellx - a;
lpPoints[0].y = celly;
lpPoints[1].x = cellx - (int)(a * 0.5);
lpPoints[1].y = celly - GRID_HEIGHT;
lpPoints[2].x = cellx + (int)(a * 0.5);
lpPoints[2].y = lpPoints[1].y;
lpPoints[3].x = cellx + a;
lpPoints[3].y = celly;
lpPoints[4].x = lpPoints[2].x;
lpPoints[4].y = celly + GRID_HEIGHT;
lpPoints[5].x = lpPoints[1].x;
lpPoints[5].y = lpPoints[4].y;
}
0 0
- 蜂窝网格算法
- 网格算法
- ArcGIS中生成蜂窝多边形算法解析
- ArcGIS中生成蜂窝多边形算法解析
- 算法之网格。。
- 六角网格相关算法
- 蜂窝小区最短距离实现 (数学归纳法+广度优先算法)
- 蜂窝小区最短距离实现 (数学归纳法+广度优先算法)
- 蜂窝小区最短距离实现 (数学归纳法+广度优先算法)
- 蜂窝小区最短距离实现 (构造图+广度优先算法)
- 一个简单的网格算法
- 递进网格算法绘制等高线
- 常用的网格布局算法
- 网格点流程配置算法
- unity 网格切割算法讲解
- 网格生产的常用算法
- 算法:网格走法数目
- 蜂窝模型
- SharePoint 判断用户是否在字段"人员和组"里面
- SharePoint 2013 关于自定义显示列表表单的bug
- 创建数据库登陆账号
- stm32f4 FSMC
- SharePoint 2013 操作文档库ECB菜单
- 蜂窝网格算法
- Linux中实时进程的调度
- 转:Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 如何设置eclipse的文件的默认打开方式
- Android Json数据解析
- 引用传参和指针传参
- Python个人学习笔记三
- Cloudera CDH 、Impala本地通过Parcel安装配置详解
- 传智播客最新三层架构及餐饮管理系统项目