/** | |
* Copyright (c) 2011, Novyon Events | |
* | |
* All rights reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are met: | |
* | |
* - Redistributions of source code must retain the above copyright notice, this | |
* list of conditions and the following disclaimer. | |
* | |
* - Redistributions in binary form must reproduce the above copyright notice, | |
* this list of conditions and the following disclaimer in the documentation | |
* and/or other materials provided with the distribution. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | |
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
* | |
* @author Anthyon | |
*/ | |
package com.jme3.terrain.noise; | |
import java.nio.FloatBuffer; | |
import com.jme3.terrain.noise.basis.ImprovedNoise; | |
import com.jme3.terrain.noise.modulator.Modulator; | |
/** | |
* Interface for - basically 3D - noise generation algorithms, based on the | |
* book: Texturing & Modeling - A Procedural Approach | |
* | |
* The main concept is to look at noise as a basis for generating fractals. | |
* Basis can be anything, like a simple: | |
* | |
* <code> | |
* float value(float x, float y, float z) { | |
* return 0; // a flat noise with 0 value everywhere | |
* } | |
* </code> | |
* | |
* or a more complex perlin noise ({@link ImprovedNoise} | |
* | |
* Fractals use these functions to generate a more complex result based on some | |
* frequency, roughness, etc values. | |
* | |
* Fractals themselves are implementing the Basis interface as well, opening | |
* an infinite range of results. | |
* | |
* @author Anthyon | |
* | |
* @since 2011 | |
* | |
*/ | |
public interface Basis { | |
public void init(); | |
public Basis setScale(float scale); | |
public float getScale(); | |
public Basis addModulator(Modulator modulator); | |
public float value(float x, float y, float z); | |
public FloatBuffer getBuffer(float sx, float sy, float base, int size); | |
} |