首页 > 其他 > 详细

45度角地图坐标计算

时间:2014-01-26 22:28:20      阅读:599      评论:0      收藏:0      [点我收藏+]

已知图片上的一个触摸点,怎么求其落在地图的哪个瓦块上?


bubuko.com,布布扣

 

已知:

瓦块尺寸64*32pt, 瓦块数20*20, 地图尺寸1280*640pt如图, 图片的原点是o1 地图原点是o2
向量: o1po1o2
地图坐标系的基向量: u, v

瓦块的宽的1/2: w
瓦块的高的1/2: h
o2的坐标: (W, H)
p的坐标:(x, y)

求:
m, n 使得 o2p=m*u+n*v

解:
根据向量减法
o2p=o1p-o1o2

o2p=(x, y) - (W, H)=(x-W, y-H)

u=(w, -h)
v=(-w, -h) 
o2p=m(w, -h)+n(-w, -h) 

(x-W, y-H) = 
m(w, -h)+n(-w, -h) 
得二元一次方程组
x-W=mw-nw
H-y=mh+nh
解得

m = (Hw - yw + xh - Wh) / (2wh)

n = (Hw - yw + Wh - xh) / (2wh)


注意m,n要截去小数部分
截去小数部分时,不能直接int iM = int(m);因为如果m==-0.5时,会被规整成0,而-0.5不合法.
所以先判断m,n的边界,再规整成整数 

则触摸点p落在了第(m, n)个瓦块上 

45度角地图坐标计算

原文:http://www.cnblogs.com/gamteq/p/3534381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!