Language agnostic 给定网格坐标,如何确定它们所在单元的中心点?

Language agnostic 给定网格坐标,如何确定它们所在单元的中心点?,language-agnostic,math,geometry,appcelerator,Language Agnostic,Math,Geometry,Appcelerator,我正在使用Appcelerator Tianium for iPhone开发一个简单的棋盘游戏(javascript——这对这个问题并不重要) 我的问题并不是特定于语言的,它更多的是一个一般的编程和数学问题 我有一个“单元格”网格,10列10行(100个单元格)。这是一种棋盘游戏,就像跳棋/跳棋一样 从顶部开始向下移动,行标记为“A”到“J” 从左侧开始向右移动,列标记为“0”到“9” 每个单元为32x32(像素) 我可以在网格上拖动一个令牌,当我释放时,它会向我报告我释放的x/y坐标,例如:1

我正在使用Appcelerator Tianium for iPhone开发一个简单的棋盘游戏(javascript——这对这个问题并不重要)

我的问题并不是特定于语言的,它更多的是一个一般的编程和数学问题

我有一个“单元格”网格,10列10行(100个单元格)。这是一种棋盘游戏,就像跳棋/跳棋一样

从顶部开始向下移动,行标记为“A”到“J”

从左侧开始向右移动,列标记为“0”到“9”

每个单元为32x32(像素)

我可以在网格上拖动一个令牌,当我释放时,它会向我报告我释放的x/y坐标,例如:124302。我可以在变量中使用这些坐标

所以我的问题是,我如何确定我释放的单元格的中心点,这样我就可以在该单元格中居中标记

关于如何实现这一点有什么想法吗

使用整数除法“舍入”原始坐标

x = (x / 32) * 32 + 16;
y = (y / 32) * 32 + 16;
因为数字是二的幂,所以也可以使用位运算

x = (x & ~0x1F) | 0x10;

是的,我就是这么想的。:)谢谢,这是我在纸上写的方向。我刚刚尝试了你的第一个“四舍五入”方法,没有得到预期的结果。例如,以坐标10,10为例。应该在第一个盒子里,第一个盒子的中心是16,16。但是如果我们在10,10上做你的数学,我们会得到26,26。除非我做错了什么。Kook,方程是正确的,但当且仅当X和Y是整数,整数除法向下舍入(大多数语言都是这样)。@k00k-是的,大多数语言支持“整数”除法,其中整数除法将向零舍入。因此,
10/32
产生0,然后
0*32
也是0,最后
0+16
产生16。啊,这是一个javascript问题。在javascript中,我需要使用Math.floor(x/32)*32+16@erickson的位操作在javascript中工作,正如他所概述的。在这些情况下,我经常发现在网格中查找单元格的坐标,而不是在屏幕上查找坐标很有用。它使游戏逻辑更简单,屏幕坐标可以很容易地从网格坐标计算出来。@fizban,我同意。下一步我需要弄清楚。