在指定范围内保持价值

时间:2012-06-16 23:49:22

标签: c++ math assembly binary

让我们说我在2d飞机上的位置有一个观点。 这一点将随机改变它的位置,但这不是重点,所以我们假设它有自己的速度,并且它在宽度和高度受限的平面上移动; 因此,经过一段时间的运动,这一点将到达飞机边界。 但它不允许离开飞机。

所以现在我可以检查每一帧的点位置,看它是否已达到约束。

如果(point.x> bound.xMax)point.x = bound.xMax

如果我想将点传送到飞机的第二侧,我可以简单地说:

point.x = point.x%bound.xMax;

然后我需要以整数存储点位置。

对于我的corei7 1.6两种解决方案的10 milion值 有类似的时间。第二节41毫秒vs 47 所以在这种情况下使用模数函数是没有意义的,只需检查值就更快。

但是,是否有任何一种技巧可以让它更快? 迭代数组方法的多个线程不是解决方案。

也许我可以将我的绑定值扩展为某个奇怪的值,例如丢弃位置值的二进制解释的一部分。

如果有一些技巧可以做到这一点,我认为有人在我之前做过:) 你知道任何可以帮助我的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果有某种方法可以在平面坐标周围添加信息,那么很可能在平面周围形成一个“边界”,其中包含一个被标识为“超出边界”的值。例如,如果您有一个10x10电路板,请将其设为12x12,并使用额外的2行和列来插入该信息。

现在你可以做(​​伪代码):     IF点IN板IS“超出边界值”那么     做你的事     结束如果

请注意,如果您的点同时具有x和y值(我在您的情况下的假设),则此方法仅是优化。

相关问题