@@ -270,11 +270,11 @@ struct CellNoise3D:Noise
270
270
271
271
// Same idea as with the 2D points, except in 3 dimensions
272
272
273
- // near - quadrant ---- near - quadrant.y
274
- // | | |
275
- // |----+----|
276
- // | | * |
277
- // near - quadrant.x -- near quadrant →
273
+ // near - quadrant.xy ———— near - quadrant.y
274
+ // | | |
275
+ // |----+----|
276
+ // | | * |
277
+ // near - quadrant.x ————— near quadrant →
278
278
// ↓
279
279
280
280
let quadrant : IntV3 = ( offset. x > 0.5 ? 1 : - 1 , offset. y > 0.5 ? 1 : - 1 , offset. z > 0.5 ? 1 : - 1 ) ,
@@ -284,9 +284,9 @@ struct CellNoise3D:Noise
284
284
abs ( offset. y - Double( ( quadrant. b + 1 ) >> 1 ) ) ,
285
285
abs ( offset. z - Double( ( quadrant. c + 1 ) >> 1 ) ) )
286
286
287
- var r2_min : Double = self . distance ( from: sample, generating_point: near)
287
+ var r2 : Double = self . distance ( from: sample, generating_point: near)
288
288
289
- let kernel : [ ( r : Double , cell_offsets: [ ( Int , Int , Int ) ] ) ] =
289
+ let kernel : [ ( r2 : Double , cell_offsets: [ ( Int , Int , Int ) ] ) ] =
290
290
[
291
291
( 0.0 , [ /*(0, 0, 0), */( - 1 , 0 , 0 ) , ( 0 , - 1 , 0 ) , ( - 1 , - 1 , 0 ) , ( 0 , 0 , - 1 ) , ( - 1 , 0 , - 1 ) , ( 0 , - 1 , - 1 ) , ( - 1 , - 1 , - 1 ) ] ) ,
292
292
( 0.25 , [ ( 0 , 0 , 1 ) , ( - 1 , 0 , 1 ) , ( 0 , - 1 , 1 ) , ( - 1 , - 1 , 1 ) , ( 0 , 1 , 0 ) , ( - 1 , 1 , 0 ) , ( 1 , 0 , 0 ) , ( 1 , - 1 , 0 ) ,
@@ -306,9 +306,10 @@ struct CellNoise3D:Noise
306
306
( 2.75 , [ ( 1 , 1 , 2 ) , ( 1 , 2 , 1 ) , ( 2 , 1 , 1 ) ] )
307
307
]
308
308
309
- for (kernel_radius , cell_offsets) : ( r : Double , cell_offsets: [ ( Int , Int , Int ) ] ) in kernel
309
+ for (kernel_radius2 , cell_offsets) : ( r2 : Double , cell_offsets: [ ( Int , Int , Int ) ] ) in kernel
310
310
{
311
- if r2_min < kernel_radius
311
+ guard kernel_radius2 < r2
312
+ else
312
313
{
313
314
break // EARLY EXIT
314
315
}
@@ -339,7 +340,7 @@ struct CellNoise3D:Noise
339
340
cell_distance2 += dz*dz
340
341
}
341
342
342
- guard cell_distance2 < r2_min
343
+ guard cell_distance2 < r2
343
344
else
344
345
{
345
346
continue
@@ -348,17 +349,16 @@ struct CellNoise3D:Noise
348
349
let generating_point : IntV3 = ( near. a + quadrant. a*cell_offset. a,
349
350
near. b + quadrant. b*cell_offset. b,
350
351
near. c + quadrant. c*cell_offset. c)
351
- let r2 : Double = self . distance ( from: sample, generating_point: generating_point)
352
- r2_min = min ( r2, r2_min)
352
+ r2 = min ( r2, self . distance ( from: sample, generating_point: generating_point) )
353
353
}
354
354
}
355
355
356
- return self . amplitude * r2_min
356
+ return self . amplitude * r2
357
357
}
358
358
359
359
public
360
360
func evaluate( _ x: Double , _ y: Double , _ z: Double , _: Double ) -> Double
361
361
{
362
- return self . evaluate ( x, y)
362
+ return self . evaluate ( x, y, z )
363
363
}
364
364
}
0 commit comments