com.jme3.terrain.heightmap
Class HillHeightMap

java.lang.Object
  extended by com.jme3.terrain.heightmap.AbstractHeightMap
      extended by com.jme3.terrain.heightmap.HillHeightMap
All Implemented Interfaces:
HeightMap

public class HillHeightMap
extends AbstractHeightMap

HillHeightMap generates a height map base on the Hill Algorithm. Terrain is generatd by growing hills of random size and height at random points in the heightmap. The terrain is then normalized and valleys can be flattened.

See Also:
Hill Algorithm

Field Summary
 
Fields inherited from class com.jme3.terrain.heightmap.AbstractHeightMap
filter, heightData, heightScale, NORMALIZE_RANGE, size
 
Constructor Summary
HillHeightMap(int size, int iterations, float minRadius, float maxRadius)
          Constructor sets the attributes of the hill system and generates the height map by using a random seed.
HillHeightMap(int size, int iterations, float minRadius, float maxRadius, long seed)
          Constructor sets the attributes of the hill system and generates the height map.
 
Method Summary
protected  void addHill(float[][] tempBuffer, java.util.Random random)
          Generates a new hill of random size and height at a random position in the heightmap.
 boolean load()
          load populates the height map data.
 void setIterations(int iterations)
          Sets the number of hills to grow.
 void setMaxRadius(float maxRadius)
          Sets the minimum radius of a hill.
 void setMinRadius(float minRadius)
          Sets the maximum radius of a hill.
 
Methods inherited from class com.jme3.terrain.heightmap.AbstractHeightMap
erodeTerrain, findMinMaxHeights, flatten, getHeightMap, getInterpolatedHeight, getScaledHeightAtPoint, getScaledHeightMap, getSize, getTrueHeightAtPoint, normalizeTerrain, save, setHeightAtPoint, setHeightScale, setMagnificationFilter, setSize, smooth, smooth, unloadHeightMap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HillHeightMap

public HillHeightMap(int size,
                     int iterations,
                     float minRadius,
                     float maxRadius,
                     long seed)
              throws java.lang.Exception
Constructor sets the attributes of the hill system and generates the height map.

Parameters:
size - size the size of the terrain to be generated
iterations - the number of hills to grow
minRadius - the minimum radius of a hill
maxRadius - the maximum radius of a hill
seed - the seed to generate the same heightmap again
Throws:
java.lang.Exception
JmeException - if size of the terrain is not greater that zero, or number of iterations is not greater that zero

HillHeightMap

public HillHeightMap(int size,
                     int iterations,
                     float minRadius,
                     float maxRadius)
              throws java.lang.Exception
Constructor sets the attributes of the hill system and generates the height map by using a random seed.

Parameters:
size - size the size of the terrain to be generated
iterations - the number of hills to grow
minRadius - the minimum radius of a hill
maxRadius - the maximum radius of a hill
Throws:
java.lang.Exception
JmeException - if size of the terrain is not greater that zero, or number of iterations is not greater that zero
Method Detail

load

public boolean load()
Description copied from interface: HeightMap
load populates the height map data. This is dependent on the subclass's implementation.

Returns:
true if the load was successful, false otherwise.

addHill

protected void addHill(float[][] tempBuffer,
                       java.util.Random random)
Generates a new hill of random size and height at a random position in the heightmap. This is the actual Hill algorithm. The Random object is used to guarantee the same heightmap for the same seed and attributes.

Parameters:
tempBuffer - the temporary height map buffer
random - the random number generator

setIterations

public void setIterations(int iterations)
                   throws java.lang.Exception
Sets the number of hills to grow. More hills usually mean a nicer heightmap.

Parameters:
iterations - the number of hills to grow
Throws:
java.lang.Exception
JmeException - if iterations if not greater than zero

setMaxRadius

public void setMaxRadius(float maxRadius)
                  throws java.lang.Exception
Sets the minimum radius of a hill.

Parameters:
maxRadius - the maximum radius of a hill
Throws:
java.lang.Exception
JmeException - if the maximum radius if not greater than zero or not greater than the minimum radius

setMinRadius

public void setMinRadius(float minRadius)
                  throws java.lang.Exception
Sets the maximum radius of a hill.

Parameters:
minRadius - the minimum radius of a hill
Throws:
java.lang.Exception
JmeException - if the minimum radius is not greater than zero or not lower than the maximum radius