【发布时间】:2010-09-28 09:18:40
【问题描述】:
我的程序中有两个简单的 while 循环,我觉得应该是数学方程,但我正在努力转换它们:
float a = someValue;
int b = someOtherValue;
int c = 0;
while (a <= -b / 2) {
c--;
a += b;
}
while (a >= b / 2) {
c++;
a -= b;
}
此代码按原样工作,但我觉得它可以简化为数学方程式。这里的想法是此代码采用偏移量 (someValue) 并调整坐标 (c) 以最小化与瓦片中心的距离(大小为 someOtherValue)。任何帮助将不胜感激。
【问题讨论】:
-
很好的洞察力——看到这可以浓缩为一个简单的公式。
-
有人能告诉我这两个循环是做什么的吗?我一辈子都想不通
-
想想一个 'b' 分开的平铺: ...|....|....|....|... 其中的平铺被编号,第 0 个平铺以 0 为中心(从 -b/2 到 b/2)。这段代码想要找出“a”在哪个图块中。第一个循环移动 a 直到它不在中心图块的左边,第二个循环直到它不在右边。
-
@litb:这可能会有所帮助:想想你将如何仅使用加法和减法而不使用内置的 % 或分工。