Skip to content

Commit a45bb1f

Browse files
committed
distorted noise
1 parent 6545cee commit a45bb1f

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

sources/noise/noise.swift

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -538,44 +538,70 @@ extension FBM where Source:BaseNoise
538538
}
539539

540540
// UNDOCUMENTED
541-
/*
542-
struct DistortedNoise<Base, Distorter>:Noise where Base:Noise, Distorter:Noise
541+
struct DistortedNoise<Source, Displacement>:Noise where Source:Noise, Displacement:Noise
543542
{
544543
private
545-
let base:Base,
546-
distorter:Distorter
544+
let source:Source,
545+
displacement:Displacement
547546

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)
549575
{
550-
self.base = base
551-
self.distorter = distorter
576+
self.source = source
577+
self.displacement = source.amplitude_scaled(by: strength)
552578
}
579+
*/
553580

554581
public
555582
func evaluate(_ x: Double, _ y: Double) -> Double
556583
{
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)
560587
}
561588

562589
public
563590
func evaluate(_ x: Double, _ y: Double, _ z: Double) -> Double
564591
{
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)
569596
}
570597

571598
public
572599
func evaluate(_ x: Double, _ y: Double, _ z: Double, _ w:Double) -> Double
573600
{
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)
579606
}
580607
}
581-
*/

0 commit comments

Comments
 (0)