在指定范围内的持续值

在指定范围内的持续值

问题描述:

可以说我在2d平面上的位置有一点。 这一点将随机改变它的位置,但那不是重点,所以我们假设它有它自己的速度,并且它在有限的宽度和高度的平面上移动; 所以经过一段时间的运动后,这一点将达到平面边界。 但它不允许离开飞机。在指定范围内的持续值

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

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

如果我想指向本身瞬间移动到平面的第二侧我可以简单地:

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

但我需要存储整数的点位置。

对于我的corei7 1.6上的10个千分值,两个解决方案 都有类似的时间。 41ms vs 47秒, ,所以在这种情况下使用模函数是没有意义的,它的检测速度更快。

但是,是否有任何一种技巧使其更快? 用于迭代数组方法的多个线程不是解决方案。

也许我可以将我的约束值扩展到一些奇怪的值,例如丢弃位置值的二进制解释的一部分。

如果有一些伎俩要做,我认为有人在我之前做过:) 你知道任何一种解决方案可以帮助我吗?

+0

在浮点值中,你不能只是“丢弃”二进制表示中的某些位,因为那样你就会丢失一些重要的数字。 – Spo1ler

+0

为什么不简单地使用'fmod()'来实现浮点模?我很肯定你不能在这样的基本计算上进行更多的优化 – Spo1ler

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

现在你可以做的(伪代码): IF点板“出边界值的” THEN 做你的事 END IF

注意,此方法只有当你点了优化x和y值(我对你的案例的假设)。