我希望能够使用周期边界条件运行粒子模拟 - 为了简单起见,我们假设一个长度为1.0
的1D模拟区域。我可以使用以下简短的代码片段来强制执行这些条件:
if (x > 1.0)
x -= 1.0;
if (x < 0.0)
x += 1.0;
但它感觉很“笨拙”1——特别是当将其推广到更高的维度时。我尝试做了一些类似于
x = x % 1.0;
这段代码对于 x > 1.0
这种情况处理得很好,但是对于 x < 0.0
2 的情况并不会产生想要的结果。下面是 "取模" 版本和 "手动" 版本输出的一些示例,以展示它们之间的差别:
Value: 1.896440, mod: 0.896440, manual: 0.896440
Value: -0.449115, mod: -0.449115, manual: 0.550885
Value: 1.355568, mod: 0.355568, manual: 0.355568
Value: -0.421918, mod: -0.421918, manual: 0.578082
1) 对于我目前的应用程序,“笨重”的方法可能已经足够了。但是为了成为更好的程序员,我仍然想学习是否有一种“更好”的(或至少外观更好的)方法来做到这一点。
2) 是的,我已经阅读了这篇文章,所以我知道为什么它不能做我想要的事情,以及它不应该。我的问题不是关于这个,而是关于应该怎么办。
if/else
语句放在一个方法中,可能会用一个指定边界的字段包装类来作为参数? - chrylis -cautiouslyoptimistic-