octaveNoise
Last updated
// Generate basic octave noise
x = 0.5
y = 0.5
z = 0.5
octaves = 4
persistence = 0.5
value = octaveNoise(x, y, z, octaves, persistence)
log "Octave noise value: " ++ value// Generate more realistic terrain using octave noise
width = 100
scale = 0.03
octaves = 6
persistence = 0.5
heights = []
for x width (
// Generate height value between 0 and 1
height = (octaveNoise(x * scale, 0, 0, octaves, persistence) + 1) / 2
// Scale to desired range (0-30)
scaledHeight = (height * 30).floor()
heights.append(scaledHeight)
)
// Render terrain
for x width (
column = ""
for y 30 (
if y >= 30 - heights[x] (
column = column ++ "#"
) else (
column = column ++ " "
)
)
log column
)// Compare different octave and persistence values
width = 40
height = 20
scale = 0.1
// Low octaves, low persistence (smooth, few details)
log "Low octaves (2), low persistence (0.3):"
for y height (
row = ""
for x width (
value = octaveNoise(x * scale, y * scale, 0, 2, 0.3)
normalized = (value + 1) / 2
if normalized < 0.3 (
row = row ++ " "
) else if normalized < 0.6 (
row = row ++ "."
) else if normalized < 0.8 (
row = row ++ "o"
) else (
row = row ++ "#"
)
)
log row
)
// High octaves, high persistence (rough, many details)
log "High octaves (8), high persistence (0.7):"
for y height (
row = ""
for x width (
value = octaveNoise(x * scale, y * scale, 0, 8, 0.7)
normalized = (value + 1) / 2
if normalized < 0.3 (
row = row ++ " "
) else if normalized < 0.6 (
row = row ++ "."
) else if normalized < 0.8 (
row = row ++ "o"
) else (
row = row ++ "#"
)
)
log row
)