Browse Source

ImprovedNoise: use MathUtils.lerp (#30905)

satelllte 10 months ago
parent
commit
e431ae3df6
1 changed files with 17 additions and 14 deletions
  1. 17 14
      examples/jsm/math/ImprovedNoise.js

+ 17 - 14
examples/jsm/math/ImprovedNoise.js

@@ -1,3 +1,7 @@
+import { MathUtils } from 'three';
+
+const { lerp } = MathUtils;
+
 const _p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
 	 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
 	 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
@@ -21,12 +25,6 @@ function fade( t ) {
 
 }
 
-function lerp( t, a, b ) {
-
-	return a + t * ( b - a );
-
-}
-
 function grad( hash, x, y, z ) {
 
 	const h = hash & 15;
@@ -69,14 +67,19 @@ class ImprovedNoise {
 
 		const A = _p[ X ] + Y, AA = _p[ A ] + Z, AB = _p[ A + 1 ] + Z, B = _p[ X + 1 ] + Y, BA = _p[ B ] + Z, BB = _p[ B + 1 ] + Z;
 
-		return lerp( w, lerp( v, lerp( u, grad( _p[ AA ], x, y, z ),
-			grad( _p[ BA ], xMinus1, y, z ) ),
-		lerp( u, grad( _p[ AB ], x, yMinus1, z ),
-			grad( _p[ BB ], xMinus1, yMinus1, z ) ) ),
-		lerp( v, lerp( u, grad( _p[ AA + 1 ], x, y, zMinus1 ),
-			grad( _p[ BA + 1 ], xMinus1, y, zMinus1 ) ),
-		lerp( u, grad( _p[ AB + 1 ], x, yMinus1, zMinus1 ),
-			grad( _p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );
+		return lerp(
+			lerp(
+				lerp( grad( _p[ AA ], x, y, z ), grad( _p[ BA ], xMinus1, y, z ), u ),
+				lerp( grad( _p[ AB ], x, yMinus1, z ), grad( _p[ BB ], xMinus1, yMinus1, z ), u ),
+				v
+			),
+			lerp(
+				lerp( grad( _p[ AA + 1 ], x, y, zMinus1 ), grad( _p[ BA + 1 ], xMinus1, y, zMinus1 ), u ),
+				lerp( grad( _p[ AB + 1 ], x, yMinus1, zMinus1 ), grad( _p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ), u ),
+				v
+			),
+			w
+		);
 
 	}
 

粤ICP备19079148号