比如我们要做一个地图编辑器,

 

那么如何判断鼠标点中了哪一个碎片呢??如图:
45度斜角地图编辑器鼠标坐标的转换

也许你想到通过解两个直线方程(点斜式):
45度斜角地图编辑器鼠标坐标的转换

不过这是个苯办法,那么怎么算呢?
开门见山:
***********************************
N=int(x/TileW - y/TileH)
M=int(x/TileW + y/TileH)

***********************************
N,M是碎片的索引,从0开始。
TileW,TileH是碎片的长宽。
x,y是鼠标坐标,但是注意坐标系原点。
以上如图:
45度斜角地图编辑器鼠标坐标的转换

 

在自己的代码中直接使用,发现这个公式有错误,当索引为负数时,直接计算会有1的误差,改正后的公式:

 

)fm;
 }

 

反过来,由M,N索引计算出当前地图块的外围矩形左上角顶点坐标的步骤:

 

nScreenPosX = (nMIndex + nNIndex) * TILEWIDTH/2 + OrgPos.x;
nScreenPosY 
= (nMIndex - nNIndex) * TILEHEIGHT/2 - TILEHEIGHT/2 + OrgPos.y;


 

相关文章:

  • 2021-07-03
  • 2021-05-19
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-08-09
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2021-11-30
  • 2022-12-23
  • 2021-04-10
相关资源
相似解决方案