Skip to content

Commit 1f98718

Browse files
committed
self-displacement initializer for DistortedNoise
1 parent 5cffe69 commit 1f98718

File tree

5 files changed

+20
-17
lines changed

5 files changed

+20
-17
lines changed

sources/noise/compounds.swift

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct FBM<Source>:Noise where Source:Noise
3434
self.generators = []
3535
}
3636

37-
@available(*, unavailable, message: "use init(source:octaves:persistence:lacunarity:) instead")
37+
@available(*, unavailable, message: "use init(_:octaves:persistence:lacunarity:) instead")
3838
public
3939
init(amplitude:Double, frequency:Double, octaves:Int, persistence:Double = 0.75, lacunarity:Double = 2, seed:Int = 0)
4040
{
@@ -43,7 +43,7 @@ struct FBM<Source>:Noise where Source:Noise
4343

4444
// UNDOCUMENTED, default was changed from 0.75 to 0.5
4545
public
46-
init(source:Source, octaves:Int, persistence:Double = 0.5, lacunarity:Double = 2)
46+
init(_ source:Source, octaves:Int, persistence:Double = 0.5, lacunarity:Double = 2)
4747
{
4848
// calculate maximum range
4949
let range_inverse:Double
@@ -109,6 +109,7 @@ struct FBM<Source>:Noise where Source:Noise
109109
}
110110

111111
// UNDOCUMENTED
112+
public
112113
struct DistortedNoise<Source, Displacement>:Noise where Source:Noise, Displacement:Noise
113114
{
114115
private
@@ -141,14 +142,6 @@ struct DistortedNoise<Source, Displacement>:Noise where Source:Noise, Displaceme
141142
self.displacement = displacement
142143
}
143144

144-
/*
145-
init(source:Source, strength:Double)
146-
{
147-
self.source = source
148-
self.displacement = source.amplitude_scaled(by: strength)
149-
}
150-
*/
151-
152145
public
153146
func evaluate(_ x: Double, _ y: Double) -> Double
154147
{
@@ -176,3 +169,13 @@ struct DistortedNoise<Source, Displacement>:Noise where Source:Noise, Displaceme
176169
return self.source.evaluate(x + dx, y + dy, z + dz, w + dw)
177170
}
178171
}
172+
173+
extension DistortedNoise where Source == Displacement
174+
{
175+
public
176+
init(_ source:Source, strength:Double)
177+
{
178+
self.source = source
179+
self.displacement = source.amplitude_scaled(by: strength)
180+
}
181+
}

sources/noise/gradient.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
fileprivate
22
enum Const
33
{
4-
fileprivate static
4+
static
55
let SQUISH_2D :Double = 0.5 * (1 / 3.squareRoot() - 1),
66
STRETCH_2D:Double = 0.5 * (3.squareRoot() - 1)
77
}

tests/banner_FBM.png

-2.38 KB
Loading

tests/noise/main.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ do
4444
print(clock() - t0)
4545
try png_encode(path: "tests/cell3d.png", raw_data: pixbuf, properties: png_properties)
4646

47-
let P:FBM<ClassicNoise3D> = FBM<ClassicNoise3D>(source: ClassicNoise3D(amplitude: 255, frequency: 0.001), octaves: 10, persistence: 0.62)
47+
let P:FBM<ClassicNoise3D> = FBM<ClassicNoise3D>(ClassicNoise3D(amplitude: 255, frequency: 0.001), octaves: 10, persistence: 0.62)
4848
t0 = clock()
4949
for (i, (x, y)) in Domain2D(samples_x: viewer_size, samples_y: viewer_size).enumerated()
5050
{
@@ -54,7 +54,7 @@ do
5454
try png_encode(path: "tests/classic3d.png", raw_data: pixbuf, properties: png_properties)
5555

5656

57-
let SS:FBM<GradientNoise2D> = FBM<GradientNoise2D>(source: GradientNoise2D(amplitude: 180, frequency: 0.001), octaves: 10, persistence: 0.62)
57+
let SS:FBM<GradientNoise2D> = FBM<GradientNoise2D>(GradientNoise2D(amplitude: 180, frequency: 0.001), octaves: 10, persistence: 0.62)
5858
t0 = clock()
5959
for (i, (x, y)) in Domain2D(samples_x: viewer_size, samples_y: viewer_size).enumerated()
6060
{
@@ -63,7 +63,7 @@ do
6363
print(clock() - t0)
6464
try png_encode(path: "tests/gradient2d.png", raw_data: pixbuf, properties: png_properties)
6565

66-
let SS3D:FBM<GradientNoise3D> = FBM<GradientNoise3D>(source: GradientNoise3D(amplitude: 180, frequency: 0.001), octaves: 10, persistence: 0.62)
66+
let SS3D:FBM<GradientNoise3D> = FBM<GradientNoise3D>(GradientNoise3D(amplitude: 180, frequency: 0.001), octaves: 10, persistence: 0.62)
6767
t0 = clock()
6868
for (i, (x, y)) in Domain2D(samples_x: viewer_size, samples_y: viewer_size).enumerated()
6969
{

tests/noise/tests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,9 @@ func banner_cell3d(width:Int, height:Int, seed:Int)
138138

139139
func banner_FBM(width:Int, height:Int, seed:Int)
140140
{
141-
color_noise_png(r_noise: FBM<CellNoise3D> (source: CellNoise3D(amplitude: 9*255, frequency: 0.01, seed: seed + 2), octaves: 7, persistence: 0.75),
142-
g_noise: FBM<GradientNoise3D>(source: GradientNoise3D(amplitude: 280, frequency: 0.005, seed: seed + 1), octaves: 7, persistence: 0.75),
143-
b_noise: FBM<GradientNoise2D>(source: GradientNoise2D(amplitude: 280, frequency: 0.005), octaves: 7, persistence: 0.75),
141+
color_noise_png(r_noise: FBM<CellNoise3D> (CellNoise3D(amplitude: 10*255, frequency: 0.01, seed: seed + 2), octaves: 7, persistence: 0.75),
142+
g_noise: FBM<GradientNoise3D>(GradientNoise3D(amplitude: 300, frequency: 0.005, seed: seed + 3), octaves: 7, persistence: 0.75),
143+
b_noise: FBM<GradientNoise2D>(GradientNoise2D(amplitude: 300, frequency: 0.005), octaves: 7, persistence: 0.75),
144144
width: width,
145145
height: height,
146146
value_offset: (0, 150, 150),

0 commit comments

Comments
 (0)