[url]http://hi.baidu.com/leexper/blog/item/9b6cce10350d1e0f203f2ecc.html[/url]
转载自 lossless1009
最终编辑 lossless1009
45度斜角地图在开发游戏时经常需要使用。
如何进行坐标之间的转换呢?
[img]http://dl.iteye.com/upload/attachment/371157/d18edaa3-149b-3017-9691-8b9802646aa3.jpg[/img]
基本的公式为:
***********************************
N=int(x/TileW – y/TileH)
M=int(x/TileW + y/TileH)
***********************************
N,M 是碎片的索引,从0开始。
TileW,TileH是碎片的长宽。
x,y是鼠标坐标,但是注意坐标系原点。
以上如图:
[img]http://dl.iteye.com/upload/attachment/371161/dd3bf10e-1bf5-3ca6-aa44-1e83c5803fb1.jpg[/img]
原理如下:
我们建立一个新的坐标系。以花体字的u,v为新的基向量。
[img]http://dl.iteye.com/upload/attachment/371159/8720ef93-1ec2-36fd-b4a4-2df5c5e6e12e.jpg[/img]
然后把鼠标坐标(注意原点!)(x,y)转换成基于新的基集t={u,v}的展开式:
[img]http://dl.iteye.com/upload/attachment/371155/4bac9fd6-3cff-3f23-b05d-8f9a41e337b1.jpg[/img]
转载自 lossless1009
最终编辑 lossless1009
45度斜角地图在开发游戏时经常需要使用。
如何进行坐标之间的转换呢?
[img]http://dl.iteye.com/upload/attachment/371157/d18edaa3-149b-3017-9691-8b9802646aa3.jpg[/img]
基本的公式为:
***********************************
N=int(x/TileW – y/TileH)
M=int(x/TileW + y/TileH)
***********************************
N,M 是碎片的索引,从0开始。
TileW,TileH是碎片的长宽。
x,y是鼠标坐标,但是注意坐标系原点。
以上如图:
[img]http://dl.iteye.com/upload/attachment/371161/dd3bf10e-1bf5-3ca6-aa44-1e83c5803fb1.jpg[/img]
原理如下:
我们建立一个新的坐标系。以花体字的u,v为新的基向量。
[img]http://dl.iteye.com/upload/attachment/371159/8720ef93-1ec2-36fd-b4a4-2df5c5e6e12e.jpg[/img]
然后把鼠标坐标(注意原点!)(x,y)转换成基于新的基集t={u,v}的展开式:
[img]http://dl.iteye.com/upload/attachment/371155/4bac9fd6-3cff-3f23-b05d-8f9a41e337b1.jpg[/img]