public interface IGridMeshService
| 限定符和类型 | 方法和说明 |
|---|---|
static IGridMeshService |
build(float worldW,
float worldH,
float gridW,
float gridH)
以格子尺寸
构建一个默认规则的网格服务
|
default Set<Integer> |
getCrossGridIds(int grid,
IGridMeshService otherGridMesh)
根据当前网格的格子ID取此格子范围在另外一层网格所交叉的格子id集合
(取格子范围在下层网格所在格子的集合)
|
default Set<Integer> |
getCrossGridIdsByLine(float ox,
float oy,
float tx,
float ty)
计算线通过了哪些当前网格的格子id
|
default Set<Grid> |
getCrossGrids(int grid,
IGridMeshService otherGridMesh)
根据当前网格的格子ID取此格子范围在另外一层网格所交叉的格子id集合
(取格子范围在下层网格所在格子的集合)
|
default Set<Grid> |
getCrossGridsByLeftDownIndexId(int indexId,
IGridMeshService otherGridMesh)
根据当前网格的格子ID取此格子范围在另外一层网格所交叉的格子id集合
(取格子范围在下层网格所在格子的集合)
|
default Set<Grid> |
getCrossGridsByLine(float ox,
float oy,
float tx,
float ty)
计算线通过了哪些当前网格的格子
|
default Grid |
getGrid(float x,
float y)
获取坐标所在格子
|
default Grid |
getGridById(int gridId)
根据格子id格子
|
default Grid |
getGridByLeftDownIndexId(int indexId)
根据左下角开始的求余索引ID拿格子
|
default Grid |
getGridByLeftUpIndexId(int indexId)
根据左上角开始的求余索引ID拿格子
|
float |
getGridHeightLength()
单个格子的高度
|
default int |
getGridId(float x,
float y)
获取坐标所在格子id
|
default List<Integer> |
getGridIdList(float x,
float y,
float xRange,
float yRange) |
default Set<Integer> |
getGridIds(float x,
float y,
float range)
根据绝对坐标和以坐标为中心点的范围取覆盖格子id
(比如一个圆或所占用的格子)
|
default Set<Integer> |
getGridIds(float x,
float y,
float xRange,
float yRange)
根据绝对坐标为中心点的范围取覆盖格子id
(比如一个圆或者一个矩形所占用的格子)
|
default Set<Integer> |
getGridIds(float x,
float y,
int gridNumRange)
根据绝对坐标和以坐标为中心点的范围取覆盖格子id
|
default Set<Integer> |
getGridIds(float x,
float y,
int xNumRange,
int yNumRange)
根据绝对坐标和以坐标为中心点的范围取覆盖格子id
|
default Set<Integer> |
getGridIds(int gridId,
int numRange)
根据格子id和格子数范围取周围格子id
如果numRange=1,则取格子id相邻的9宫格
|
default Set<Integer> |
getGridIds(int gridId,
int xNumRange,
int yNumRange)
根据格子id和格子数范围取周围格子
如果numRange=1,则取格子id相邻的9宫格
|
default int |
getGridNumWithHeight()
取纵向(Y轴)格子数量
|
default int |
getGridNumWithWidth()
取横向(X轴)格子数量
|
default Set<Grid> |
getGrids(float x,
float y,
float range)
根据坐标和像素范围获取格子
|
default Set<Grid> |
getGrids(float x,
float y,
float xRange,
float yRange)
根据坐标和像素范围获取格子
|
default Set<Grid> |
getGrids(float x,
float y,
int gridNumRange)
根据坐标和格子数量范围获取格子
|
default Set<Grid> |
getGrids(float x,
float y,
int xNumRange,
int yNumRange)
根据坐标和格子数量范围获取格子
|
default Set<Grid> |
getGrids(int gridId,
int numRange)
根据格子id和格子数范围取周围格子id
如果numRange=1,则取格子id相邻的9宫格
|
default Set<Grid> |
getGrids(int gridId,
int xNumRange,
int yNumRange)
根据格子id和格子数范围取周围格子
如果numRange=1,则取格子id相邻的9宫格
|
float |
getGridWidthLength()
单个格子的宽度
|
float |
getWorldHeightLength()
世界高
|
float |
getWorldWidthLength()
世界宽
|
default boolean |
inWorld(float x,
float y)
坐标是否在世界
|
static boolean |
isLineIntersectRectangle(float linePointX1,
float linePointY1,
float linePointX2,
float linePointY2,
float rectangleLeftTopX,
float rectangleLeftTopY,
float rectangleRightBottomX,
float rectangleRightBottomY)
判断线段是否在矩形内
先看线段所在直线是否与矩形相交, 如果不相交则返回false, 如果相交,
则看线段的两个点是否在矩形的同一边(即两点的x(y)坐标都比矩形的小x(y)坐标小,或者大), 若在同一边则返回false, 否则就是相交的情况。
|
default boolean |
isNearBy(int gridId1,
int range1,
int gridId2,
int range2)
比较两个网格是否相邻
|
default boolean |
isNearByWithLeftDownIndexId(int indexId1,
int range1,
int indexId2,
int range2)
根据左下角索引id
比较两个网格是否相邻
|
float getWorldWidthLength()
float getWorldHeightLength()
float getGridWidthLength()
float getGridHeightLength()
default int getGridNumWithWidth()
default int getGridNumWithHeight()
default int getGridId(float x,
float y)
x - y - default Grid getGrid(float x, float y)
x - y - default Grid getGridById(int gridId)
gridId - default Grid getGridByLeftDownIndexId(int indexId)
indexId - default Grid getGridByLeftUpIndexId(int indexId)
indexId - default Set<Grid> getGrids(float x, float y, float range)
x - y - range - default Set<Grid> getGrids(float x, float y, int gridNumRange)
x - y - gridNumRange - 如果numRange=1,则取格子id相邻的9宫格default Set<Grid> getGrids(float x, float y, int xNumRange, int yNumRange)
x - y - xNumRange - x轴格子数量范围yNumRange - y轴格子数量范围default Set<Grid> getGrids(float x, float y, float xRange, float yRange)
x - y - xRange - yRange - default Set<Integer> getGridIds(float x, float y, float range)
x - y - range - 以x,y为中心点的半径长度default Set<Integer> getGridIds(float x, float y, int gridNumRange)
x - y - gridNumRange - 如果numRange=1,则取格子id相邻的9宫格default Set<Integer> getGridIds(float x, float y, int xNumRange, int yNumRange)
x - y - xNumRange - x轴格子数量范围yNumRange - y轴格子数量范围default Set<Integer> getGridIds(float x, float y, float xRange, float yRange)
x - y - xRange - 以x,y为中心点的朝向x轴的范围yRange - 以x,y为中心点的朝向y轴的范围default Set<Grid> getGrids(int gridId, int numRange)
gridId - numRange - 格子数量范围default Set<Grid> getGrids(int gridId, int xNumRange, int yNumRange)
gridId - xNumRange - x轴格子数量范围yNumRange - y轴格子数量范围default Set<Integer> getGridIds(int gridId, int numRange)
gridId - numRange - 格子数量范围default Set<Integer> getGridIds(int gridId, int xNumRange, int yNumRange)
gridId - xNumRange - x轴格子数量范围yNumRange - y轴格子数量范围default boolean isNearBy(int gridId1,
int range1,
int gridId2,
int range2)
gridId1 - 网格1range1 - 网格1的范围gridId2 - 网格2range2 - 网格2的范围default boolean isNearByWithLeftDownIndexId(int indexId1,
int range1,
int indexId2,
int range2)
indexId1 - range1 - indexId2 - range2 - default Set<Grid> getCrossGrids(int grid, IGridMeshService otherGridMesh)
grid - 当前网格的格子otherGridMesh - 其它网格default Set<Grid> getCrossGridsByLeftDownIndexId(int indexId, IGridMeshService otherGridMesh)
indexId - 当前网格的格子左下角求余索引otherGridMesh - 其它网格default Set<Integer> getCrossGridIds(int grid, IGridMeshService otherGridMesh)
grid - 当前网格的格子otherGridMesh - 其它网格default Set<Grid> getCrossGridsByLine(float ox, float oy, float tx, float ty)
ox - 线起始点oy - tx - 线结束点ty - default Set<Integer> getCrossGridIdsByLine(float ox, float oy, float tx, float ty)
ox - 线起始点oy - tx - 线结束点ty - default boolean inWorld(float x,
float y)
x - y - static boolean isLineIntersectRectangle(float linePointX1,
float linePointY1,
float linePointX2,
float linePointY2,
float rectangleLeftTopX,
float rectangleLeftTopY,
float rectangleRightBottomX,
float rectangleRightBottomY)
判断线段是否在矩形内
先看线段所在直线是否与矩形相交, 如果不相交则返回false, 如果相交, 则看线段的两个点是否在矩形的同一边(即两点的x(y)坐标都比矩形的小x(y)坐标小,或者大), 若在同一边则返回false, 否则就是相交的情况。linePointX1 - 线段起始点x坐标linePointY1 - 线段起始点y坐标linePointX2 - 线段结束点x坐标linePointY2 - 线段结束点y坐标rectangleLeftTopX - 矩形左上点x坐标rectangleLeftTopY - 矩形左上点y坐标rectangleRightBottomX - 矩形右下点x坐标rectangleRightBottomY - 矩形右下点y坐标static IGridMeshService build(float worldW, float worldH, float gridW, float gridH)
worldW - worldH - gridW - gridH - Copyright © 2020. All rights reserved.