mirror of
https://github.com/TangentFoxy/heightmap.git
synced 2026-07-21 21:46:52 -06:00
Merge pull request #4 from TangentFoxy/TangentFoxy-patch-1
Close #3 export normalize function
This commit is contained in:
@@ -39,6 +39,9 @@ map = heightmap.create(150, 300, -1, 1)
|
||||
|
||||
-- use the custom height function and normalize with a range of 10 to 20
|
||||
map = heightmap.create(200, 200, f, 10, 20)
|
||||
|
||||
-- re-normalize a map in-place at any time (example range of 0 to 1)
|
||||
heightmap.normalize(map, 0, 1)
|
||||
```
|
||||
|
||||
How it Works
|
||||
|
||||
+17
-14
@@ -24,6 +24,20 @@ local function max(t)
|
||||
return r
|
||||
end
|
||||
|
||||
local function normalize(map, new_min, new_max)
|
||||
local minimum = min(map)
|
||||
local initialRange = max(map) - minimum
|
||||
local finalRange = new_max - new_min
|
||||
for i = 0, #map do
|
||||
for j = 0, #map[0] do
|
||||
map[i][j] = (map[i][j] - minimum) / initialRange * finalRange + new_min
|
||||
end
|
||||
end
|
||||
map.min = min(map)
|
||||
map.max = max(map)
|
||||
return map -- superfluous
|
||||
end
|
||||
|
||||
local function create(width, height, f_or_min, min_or_max, max_if_f)
|
||||
local map, rangeMin, rangeMax
|
||||
if type(f_or_min) == "function" then
|
||||
@@ -36,22 +50,11 @@ local function create(width, height, f_or_min, min_or_max, max_if_f)
|
||||
rangeMax = min_or_max
|
||||
end
|
||||
|
||||
local minimum = min(map)
|
||||
local initialRange = max(map) - minimum
|
||||
local finalRange = rangeMax - rangeMin
|
||||
for i=0,#map do
|
||||
for j=0,#map[0] do
|
||||
map[i][j] = (map[i][j] - minimum) / initialRange * finalRange + rangeMin
|
||||
end
|
||||
end
|
||||
|
||||
map.min = min(map)
|
||||
map.max = max(map)
|
||||
|
||||
return map
|
||||
return normalize(map, rangeMin, rangeMax)
|
||||
end
|
||||
|
||||
return {
|
||||
create = create,
|
||||
defaultf = heightmap.defaultf
|
||||
defaultf = heightmap.defaultf,
|
||||
normalize = normalize,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user