MathUtils.euclideanModulo的用途是什么,它与常规模有什么不同?

问题描述

我对threejs中mathutils的euclideanModulo方法有些困惑。 我已经知道模符号的作用,但是euclideanModulo看起来完全不同。

( ( n % m ) + m ) % m

我尝试查找欧几里得语的语义,但只说了这一点:

关于或表示基于 欧几里得与普通几何体相对应。

有人可以解释吗?我在任何地方都找不到进一步的解释?

解决方法

使用负数时会出现一个有据可查的Javascript模错误。您可以将x % 4视为一个数字轮:

enter image description here

  • 当x从0变为正数时,结果为:0,1,2,3,...
  • 当x从0变为负数时,结果为:0,...

但是在JavaScript中,当您执行-5 % 4时会得到-1,这不是正确的答案。它甚至不在可能的答案列表中。怎么可能有负的余数?答案应该是3。这是正确答案与错误Javascript答案的列表:

1 % 4 = 1   // JS gives you 1
0 % 4 = 0   // JS gives you 0
-1 % 4 = 3  // JS gives you -1
-2 % 4 = 2  // JS gives you -2
-3 % 4 = 1  // JS gives you -3
-4 % 4 = 0  // JS gives you -0
-5 % 4 = 3  // JS gives you -1

为使您的生活更轻松,Three.js为您提供了一个实用程序,可以获取正确的答案来规避此JavaScript错误。 THREE.MathUtils.euclideanModulo(-5,4)为您提供正确的答案3