mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-30 23:15:32 +01:00 
			
		
		
		
	--HG-- rename : src/noise.cpp.new => misc/noise.cpp rename : src/noise.h.new => misc/noise.h
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| Minetest-c55
 | |
| Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
 | |
| 
 | |
| This program is free software; you can redistribute it and/or modify
 | |
| it under the terms of the GNU General Public License as published by
 | |
| the Free Software Foundation; either version 2 of the License, or
 | |
| (at your option) any later version.
 | |
| 
 | |
| This program is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License along
 | |
| with this program; if not, write to the Free Software Foundation, Inc.,
 | |
| 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | |
| */
 | |
| 
 | |
| #ifndef NOISE_HEADER
 | |
| #define NOISE_HEADER
 | |
| 
 | |
| double easeCurve(double t);
 | |
|  
 | |
| // Return value: -1 ... 1
 | |
| double noise2d(int x, int y, int seed);
 | |
| double noise3d(int x, int y, int z, int seed);
 | |
| 
 | |
| double noise2d_gradient(double x, double y, int seed);
 | |
| double noise3d_gradient(double x, double y, double z, int seed);
 | |
| 
 | |
| double noise2d_perlin(double x, double y, int seed,
 | |
| 		int octaves, double persistence);
 | |
| 
 | |
| double noise2d_perlin_abs(double x, double y, int seed,
 | |
| 		int octaves, double persistence);
 | |
| 
 | |
| double noise3d_perlin(double x, double y, double z, int seed,
 | |
| 		int octaves, double persistence);
 | |
| 
 | |
| double noise3d_perlin_abs(double x, double y, double z, int seed,
 | |
| 		int octaves, double persistence);
 | |
| 
 | |
| enum NoiseType
 | |
| {
 | |
| 	NOISE_PERLIN,
 | |
| 	NOISE_PERLIN_ABS,
 | |
| 	NOISE_PERLIN_CONTOUR,
 | |
| 	NOISE_PERLIN_CONTOUR_FLIP_YZ
 | |
| };
 | |
| 
 | |
| struct NoiseParams
 | |
| {
 | |
| 	NoiseType type;
 | |
| 	int seed;
 | |
| 	int octaves;
 | |
| 	double persistence;
 | |
| 	double pos_scale;
 | |
| 	double noise_scale; // Useful for contour noises
 | |
| 	
 | |
| 	NoiseParams(NoiseType type_=NOISE_PERLIN, int seed_=0,
 | |
| 			int octaves_=3, double persistence_=0.5,
 | |
| 			double pos_scale_=100.0, double noise_scale_=1.0):
 | |
| 		type(type_),
 | |
| 		seed(seed_),
 | |
| 		octaves(octaves_),
 | |
| 		persistence(persistence_),
 | |
| 		pos_scale(pos_scale_),
 | |
| 		noise_scale(noise_scale_)
 | |
| 	{
 | |
| 	}
 | |
| };
 | |
| 
 | |
| double noise3d_param(const NoiseParams ¶m, double x, double y, double z);
 | |
| 
 | |
| class NoiseBuffer
 | |
| {
 | |
| public:
 | |
| 	NoiseBuffer();
 | |
| 	~NoiseBuffer();
 | |
| 	
 | |
| 	void clear();
 | |
| 	void create(const NoiseParams ¶m,
 | |
| 			double first_x, double first_y, double first_z,
 | |
| 			double last_x, double last_y, double last_z,
 | |
| 			double samplelength_x, double samplelength_y, double samplelength_z);
 | |
| 	void multiply(const NoiseParams ¶m);
 | |
| 	// Deprecated
 | |
| 	void create(int seed, int octaves, double persistence,
 | |
| 			bool abs,
 | |
| 			double first_x, double first_y, double first_z,
 | |
| 			double last_x, double last_y, double last_z,
 | |
| 			double samplelength_x, double samplelength_y, double samplelength_z);
 | |
| 
 | |
| 	void intSet(int x, int y, int z, double d);
 | |
| 	void intMultiply(int x, int y, int z, double d);
 | |
| 	double intGet(int x, int y, int z);
 | |
| 	double get(double x, double y, double z);
 | |
| 
 | |
| private:
 | |
| 	double *m_data;
 | |
| 	double m_start_x, m_start_y, m_start_z;
 | |
| 	double m_samplelength_x, m_samplelength_y, m_samplelength_z;
 | |
| 	int m_size_x, m_size_y, m_size_z;
 | |
| };
 | |
| 
 | |
| #endif
 | |
| 
 |