From 30a5e028c5f8bfbd488046879334688fe3cab10e Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sat, 7 Apr 2007 16:19:49 +0000 Subject: [PATCH] Port to a 2D Heightmap complete --- OpenSim.Terrain.BasicTerrain/Normalise.cs | 83 +++++++++++++++++++ .../OpenSim.Terrain.BasicTerrain.csproj | 1 + OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | 1 + 3 files changed, 85 insertions(+) create mode 100644 OpenSim.Terrain.BasicTerrain/Normalise.cs diff --git a/OpenSim.Terrain.BasicTerrain/Normalise.cs b/OpenSim.Terrain.BasicTerrain/Normalise.cs new file mode 100644 index 0000000000..507795bdd2 --- /dev/null +++ b/OpenSim.Terrain.BasicTerrain/Normalise.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace OpenSim.Terrain.BasicTerrain +{ + static class Normalise + { + public static void normalise(float[,] map) + { + double max = findMax(map); + double min = findMin(map); + int w = map.GetLength(0); + int h = map.GetLength(1); + + int x, y; + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + map[x, y] = (float)((map[x, y] - min) * (1.0 / (max - min))); + } + } + } + + public static void normalise(float[,] map, double newmax) + { + double max = findMax(map); + double min = findMin(map); + int w = map.GetLength(0); + int h = map.GetLength(1); + + int x, y; + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + map[x, y] = (float)((map[x, y] - min) * (1.0 / (max - min)) * newmax); + } + } + } + + public static double findMax(float[,] map) + { + int x, y; + int w = map.GetLength(0); + int h = map.GetLength(1); + double max = double.MinValue; + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + if (map[x, y] > max) + max = map[x, y]; + } + } + + return max; + } + + public static double findMin(float[,] map) + { + int x, y; + int w = map.GetLength(0); + int h = map.GetLength(1); + double min = double.MaxValue; + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + if (map[x, y] < min) + min = map[x, y]; + } + } + + return min; + } + } +} diff --git a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj index 21039027dc..328f69de7c 100644 --- a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj +++ b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj @@ -34,6 +34,7 @@ + diff --git a/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs index 60b49aeb70..de0ab50ee8 100644 --- a/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs @@ -67,6 +67,7 @@ namespace OpenSim.Terrain lock (map) { Hills.hillsSpheres(this.map, 1337, 200, 20, 40, true, true, false); + Normalise.normalise(this.map,60); } }