在指定范围内维持值
Sustaining value in specified range
本文关键字:范围内 更新时间:2023-10-16
假设我有一个点,它在 2d 平面上的位置。这个点会随机改变它的位置,但这不是重点,所以让我们假设它有自己的速度,并且在宽度和高度有限的平面上移动;所以经过一段时间的移动,这个点将达到平面边界。但它不允许离开飞机。
所以现在我可以检查每一帧的点位置,看看它是否达到极限。
if(point.x>bound.xMax)point.x=bound.xMax
如果我想指向将自己传送到平面的第二侧,我可以简单地:
point.x = point.x%bound.xMax;
但是我需要以整数形式存储点位置。
对于我的 corei7 上的 10 milion 值 1.6 两种解决方案有类似的时间。41 毫秒与秒为 47 相比,因此,在这种情况下使用模函数是没有意义的,只检查值会更快。
但是,有什么技巧可以使其更快吗?用于迭代数组方法的多线程不是解决方案。
也许我可以将我的绑定值缩放到一些奇怪的值,例如丢弃对位置值的二进制解释的一部分。
如果有什么技巧可以做到这一点,我想有人在我之前做了:)你知道有什么解决方案可以帮助我吗?
如果有某种方法可以在平面坐标周围添加信息,您完全可以在平面周围创建一个"边界",其中包含一个被标识为"超出边界"的值。例如,如果您有一个 10x10 的板,请将其设为 12x12,并使用 2 个额外的行和列插入该信息。
现在你可以做(伪代码): 如果板中的点是"超出边界值",则 做你的事 结束如果
请注意,仅当您的点同时具有 x 和 y 值时,此方法才是一种优化(我对你的情况的假设)。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 错误:未在此范围内声明'reverse'
- 并行用于C++17中数组索引范围内的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- 查找给定范围内最长连续 1 的频率
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- 变量不在 lambda 的范围内