@@ -538,44 +538,70 @@ extension FBM where Source:BaseNoise
538
538
}
539
539
540
540
// UNDOCUMENTED
541
- /*
542
- struct DistortedNoise<Base, Distorter>:Noise where Base:Noise, Distorter:Noise
541
+ struct DistortedNoise < Source, Displacement> : Noise where Source: Noise , Displacement: Noise
543
542
{
544
543
private
545
- let base:Base ,
546
- distorter:Distorter
544
+ let source : Source ,
545
+ displacement : Displacement
547
546
548
- init(base:Base, distorted_by distorter:Distorter)
547
+ public
548
+ func amplitude_scaled( by factor: Double ) -> DistortedNoise < Source , Displacement >
549
+ {
550
+ return DistortedNoise < Source , Displacement > ( source: self . source. amplitude_scaled ( by: factor) ,
551
+ displacement: self . displacement)
552
+ }
553
+ public
554
+ func frequency_scaled( by factor: Double ) -> DistortedNoise < Source , Displacement >
555
+ {
556
+ return DistortedNoise < Source , Displacement > ( source: self . source. frequency_scaled ( by: factor) ,
557
+ displacement: self . displacement. frequency_scaled ( by: factor)
558
+ . amplitude_scaled ( by: factor) )
559
+ }
560
+ public
561
+ func reseeded( ) -> DistortedNoise < Source , Displacement >
562
+ {
563
+ return DistortedNoise < Source , Displacement > ( source: self . source. reseeded ( ) ,
564
+ displacement: self . displacement. reseeded ( ) )
565
+ }
566
+
567
+ init ( source: Source , displacement: Displacement )
568
+ {
569
+ self . source = source
570
+ self . displacement = displacement
571
+ }
572
+
573
+ /*
574
+ init(source:Source, strength:Double)
549
575
{
550
- self.base = base
551
- self.distorter = distorter
576
+ self.source = source
577
+ self.displacement = source.amplitude_scaled(by: strength)
552
578
}
579
+ */
553
580
554
581
public
555
582
func evaluate( _ x: Double , _ y: Double ) -> Double
556
583
{
557
- let dx:Double = self.distorter .evaluate(x, y),
558
- dy:Double = self.distorter .evaluate(y, x)
559
- return self.base .evaluate(x + dx, y + dy)
584
+ let dx : Double = self . displacement . evaluate ( x, y) ,
585
+ dy : Double = self . displacement . evaluate ( y, x)
586
+ return self . source . evaluate ( x + dx, y + dy)
560
587
}
561
588
562
589
public
563
590
func evaluate( _ x: Double , _ y: Double , _ z: Double ) -> Double
564
591
{
565
- let dx:Double = 1.0 + self.distorter .evaluate(x, y, z),
566
- dy:Double = 1.0 + self.distorter .evaluate(y, z, x),
567
- dz:Double = 1.0 + self.distorter .evaluate(z, x, y)
568
- return self.base .evaluate(x + dx, y + dy, z + dz)
592
+ let dx : Double = 1.0 + self . displacement . evaluate ( x, y, z) ,
593
+ dy : Double = 1.0 + self . displacement . evaluate ( y, z, x) ,
594
+ dz : Double = 1.0 + self . displacement . evaluate ( z, x, y)
595
+ return self . source . evaluate ( x + dx, y + dy, z + dz)
569
596
}
570
597
571
598
public
572
599
func evaluate( _ x: Double , _ y: Double , _ z: Double , _ w: Double ) -> Double
573
600
{
574
- let dx:Double = self.distorter .evaluate(x, y, z, w),
575
- dy:Double = self.distorter .evaluate(y, z, w, x),
576
- dz:Double = self.distorter .evaluate(z, w, x, y),
577
- dw:Double = self.distorter .evaluate(w, x, y, z)
578
- return self.base .evaluate(x + dx, y + dy, z + dz, w + dw)
601
+ let dx : Double = self . displacement . evaluate ( x, y, z, w) ,
602
+ dy : Double = self . displacement . evaluate ( y, z, w, x) ,
603
+ dz : Double = self . displacement . evaluate ( z, w, x, y) ,
604
+ dw : Double = self . displacement . evaluate ( w, x, y, z)
605
+ return self . source . evaluate ( x + dx, y + dy, z + dz, w + dw)
579
606
}
580
607
}
581
- */
0 commit comments