1/** 2 * Copyright (c) 2011, Novyon Events 3 * 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * - Redistributions of source code must retain the above copyright notice, this 10 * list of conditions and the following disclaimer. 11 * 12 * - Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * @author Anthyon 29 */ 30package com.jme3.terrain.noise; 31 32import java.nio.FloatBuffer; 33 34import com.jme3.terrain.noise.basis.ImprovedNoise; 35import com.jme3.terrain.noise.modulator.Modulator; 36 37/** 38 * Interface for - basically 3D - noise generation algorithms, based on the 39 * book: Texturing & Modeling - A Procedural Approach 40 * 41 * The main concept is to look at noise as a basis for generating fractals. 42 * Basis can be anything, like a simple: 43 * 44 * <code> 45 * float value(float x, float y, float z) { 46 * return 0; // a flat noise with 0 value everywhere 47 * } 48 * </code> 49 * 50 * or a more complex perlin noise ({@link ImprovedNoise} 51 * 52 * Fractals use these functions to generate a more complex result based on some 53 * frequency, roughness, etc values. 54 * 55 * Fractals themselves are implementing the Basis interface as well, opening 56 * an infinite range of results. 57 * 58 * @author Anthyon 59 * 60 * @since 2011 61 * 62 */ 63public interface Basis { 64 65 public void init(); 66 67 public Basis setScale(float scale); 68 69 public float getScale(); 70 71 public Basis addModulator(Modulator modulator); 72 73 public float value(float x, float y, float z); 74 75 public FloatBuffer getBuffer(float sx, float sy, float base, int size); 76 77} 78