问题描述
我对threejs中mathutils的euclideanModulo方法有些困惑。 我已经知道模符号的作用,但是euclideanModulo看起来完全不同。
( ( n % m ) + m ) % m
我尝试查找欧几里得语的语义,但只说了这一点:
关于或表示基于 欧几里得与普通几何体相对应。
有人可以解释吗?我在任何地方都找不到进一步的解释?
解决方法
使用负数时会出现一个有据可查的Javascript模错误。您可以将x % 4
视为一个数字轮:
- 当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
。