我想运行具有周期性边界条件的粒子模拟 - 为简单起见,让我们假设一个区域为 length 的一维模拟1.0
。我可以使用以下简短片段强制执行这些条件:
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 )是的,我读过这篇文章,所以我知道为什么它不符合我的要求,也不应该这样做。我的问题不是关于这个,而是关于做什么。