From a41a2ddcb3d67d4ec1eeb9ad8584423d4fcab564 Mon Sep 17 00:00:00 2001 From: Remi Beges Date: Sun, 30 Sep 2012 19:13:25 +0200 Subject: [PATCH] Added ability to give offset and gain to every noise (mappedNoise) + bugfixes --- include/Nazara/Noise/Abstract2DNoise.hpp | 5 ++--- include/Nazara/Noise/Abstract2DNoise.inl | 8 ++++---- include/Nazara/Noise/Abstract3DNoise.hpp | 6 +++--- include/Nazara/Noise/Abstract3DNoise.inl | 8 ++++---- include/Nazara/Noise/Abstract4DNoise.hpp | 7 +++---- include/Nazara/Noise/Abstract4DNoise.inl | 8 ++++---- include/Nazara/Noise/MappedNoiseBase.inl | 4 ++-- include/Nazara/Noise/Perlin2D.hpp | 2 +- include/Nazara/Noise/Perlin3D.hpp | 2 +- include/Nazara/Noise/Perlin3D.inl | 6 +++--- include/Nazara/Noise/Perlin4D.hpp | 2 +- include/Nazara/Noise/Simplex2D.hpp | 2 +- include/Nazara/Noise/Simplex3D.hpp | 2 +- include/Nazara/Noise/Simplex4D.hpp | 2 +- 14 files changed, 31 insertions(+), 33 deletions(-) diff --git a/include/Nazara/Noise/Abstract2DNoise.hpp b/include/Nazara/Noise/Abstract2DNoise.hpp index 819c528d3..9b69a8d3d 100644 --- a/include/Nazara/Noise/Abstract2DNoise.hpp +++ b/include/Nazara/Noise/Abstract2DNoise.hpp @@ -10,13 +10,12 @@ #include #include -template class NAZARA_API NzAbstract2DNoise : public NzMappedNoiseBase +template class NzAbstract2DNoise : public NzMappedNoiseBase { public: + virtual T GetBasicValue(T x, T y); virtual T GetMappedValue(T x, T y); virtual T GetValue(T x, T y, T resolution) = 0; - virtual T GetValue(T x, T y); - }; #include diff --git a/include/Nazara/Noise/Abstract2DNoise.inl b/include/Nazara/Noise/Abstract2DNoise.inl index 868e6fda1..98b738d36 100644 --- a/include/Nazara/Noise/Abstract2DNoise.inl +++ b/include/Nazara/Noise/Abstract2DNoise.inl @@ -9,15 +9,15 @@ #include template -T NzAbstract2DNoise::GetMappedValue(T x, T y) +T NzAbstract2DNoise::GetBasicValue(T x, T y) { - return GetValue(x,y,this->m_resolution) * this->m_gain + this->m_offset; + return this->GetValue(x,y,this->m_resolution); } template -T NzAbstract2DNoise::GetValue(T x, T y) +T NzAbstract2DNoise::GetMappedValue(T x, T y) { - return GetValue(x,y,this->m_resolution); + return (this->GetValue(x,y,this->m_resolution) + this->m_offset) * this->m_gain; } #include diff --git a/include/Nazara/Noise/Abstract3DNoise.hpp b/include/Nazara/Noise/Abstract3DNoise.hpp index 8ae002425..c921f9407 100644 --- a/include/Nazara/Noise/Abstract3DNoise.hpp +++ b/include/Nazara/Noise/Abstract3DNoise.hpp @@ -10,12 +10,12 @@ #include #include -template class NAZARA_API NzAbstract3DNoise : public NzMappedNoiseBase +template class NzAbstract3DNoise : public NzMappedNoiseBase { public: + virtual T GetBasicValue(T x, T y, T z); virtual T GetMappedValue(T x, T y, T z); - virtual T GetValue(T x, T y, T z) = 0; - virtual T GetValue(T x, T y, T z, T resolution); + virtual T GetValue(T x, T y, T z, T resolution) = 0; }; #include diff --git a/include/Nazara/Noise/Abstract3DNoise.inl b/include/Nazara/Noise/Abstract3DNoise.inl index 986fec840..cc32aa556 100644 --- a/include/Nazara/Noise/Abstract3DNoise.inl +++ b/include/Nazara/Noise/Abstract3DNoise.inl @@ -9,15 +9,15 @@ #include template -T NzAbstract3DNoise::GetMappedValue(T x, T y, T z) +T NzAbstract3DNoise::GetBasicValue(T x, T y, T z) { - return GetValue(x,y,z) * m_gain + m_offset; + return this->GetValue(x,y,z,this->m_resolution); } template -T NzAbstract3DNoise::GetValue(T x, T y, T z, T resolution) +T NzAbstract3DNoise::GetMappedValue(T x, T y, T z) { - return GetValue(x,y,z,this->m_resolution); + return (this->GetValue(x,y,z,this->m_resolution) + this->m_offset) * this->m_gain ; } #include diff --git a/include/Nazara/Noise/Abstract4DNoise.hpp b/include/Nazara/Noise/Abstract4DNoise.hpp index f2d30f0ee..6f4e24a2c 100644 --- a/include/Nazara/Noise/Abstract4DNoise.hpp +++ b/include/Nazara/Noise/Abstract4DNoise.hpp @@ -10,13 +10,12 @@ #include #include -template class NAZARA_API NzAbstract4DNoise : public NzMappedNoiseBase +template class NzAbstract4DNoise : public NzMappedNoiseBase { public: + virtual T GetBasicValue(T x, T y, T z, T w); virtual T GetMappedValue(T x, T y, T z, T w); - virtual T GetValue(T x, T y, T z, T w) = 0; - virtual T GetValue(T x, T y, T z, T w, T resolution); - + virtual T GetValue(T x, T y, T z, T w, T resolution) = 0; }; #include diff --git a/include/Nazara/Noise/Abstract4DNoise.inl b/include/Nazara/Noise/Abstract4DNoise.inl index 09cbfd0df..579938446 100644 --- a/include/Nazara/Noise/Abstract4DNoise.inl +++ b/include/Nazara/Noise/Abstract4DNoise.inl @@ -9,15 +9,15 @@ #include template -T NzAbstract4DNoise::GetMappedValue(T x, T y, T z, T w) +T NzAbstract4DNoise::GetBasicValue(T x, T y, T z, T w) { - return GetValue(x,y,z,w) * m_gain + m_offset; + return this->GetValue(x,y,z,w,this->m_resolution); } template -T NzAbstract3DNoise::GetValue(T x, T y, T z, T resolution) +T NzAbstract4DNoise::GetMappedValue(T x, T y, T z, T w) { - return GetValue(x,y,z,w,this->m_resolution); + return (this->GetValue(x,y,z,w,this->m_resolution) + this->m_offset) * this->m_gain ; } #include diff --git a/include/Nazara/Noise/MappedNoiseBase.inl b/include/Nazara/Noise/MappedNoiseBase.inl index 20cb90915..9f70dee87 100644 --- a/include/Nazara/Noise/MappedNoiseBase.inl +++ b/include/Nazara/Noise/MappedNoiseBase.inl @@ -52,11 +52,11 @@ void NzMappedNoiseBase::SetResolution(T resolution) if (NzNumberEquals(resolution, static_cast(0.0))) { NzStringStream ss; - ss << __FILE__ << ':' << __LINE__ << ": Division by zero"; + ss << __FILE__ << ':' << __LINE__ << " : resolution cannot be 0.0f"; throw std::domain_error(ss.ToString()); } - m_resolution = static_cast(1.0)/resolution; + m_resolution = resolution; } #include diff --git a/include/Nazara/Noise/Perlin2D.hpp b/include/Nazara/Noise/Perlin2D.hpp index 8109aaca3..5fc43c6a1 100644 --- a/include/Nazara/Noise/Perlin2D.hpp +++ b/include/Nazara/Noise/Perlin2D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzPerlin2D : public NzAbstract2DNoise, public NzNoiseBase +template class NzPerlin2D : public NzAbstract2DNoise, public NzNoiseBase { public: NzPerlin2D(); diff --git a/include/Nazara/Noise/Perlin3D.hpp b/include/Nazara/Noise/Perlin3D.hpp index f93569005..8476c1a42 100644 --- a/include/Nazara/Noise/Perlin3D.hpp +++ b/include/Nazara/Noise/Perlin3D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzPerlin3D : public NzAbstract3DNoise, public NzNoiseBase +template class NzPerlin3D : public NzAbstract3DNoise, public NzNoiseBase { public: NzPerlin3D(); diff --git a/include/Nazara/Noise/Perlin3D.inl b/include/Nazara/Noise/Perlin3D.inl index ec6afd286..c88af73e0 100644 --- a/include/Nazara/Noise/Perlin3D.inl +++ b/include/Nazara/Noise/Perlin3D.inl @@ -24,9 +24,9 @@ NzPerlin3D::NzPerlin3D() template T NzPerlin3D::GetValue(T x, T y, T z, T resolution) { - x *= resolution; - y *= resolution; - z *= resolution; + x /= resolution; + y /= resolution; + z /= resolution; x0 = fastfloor(x); y0 = fastfloor(y); diff --git a/include/Nazara/Noise/Perlin4D.hpp b/include/Nazara/Noise/Perlin4D.hpp index 5b4ead5a8..9d26723c6 100644 --- a/include/Nazara/Noise/Perlin4D.hpp +++ b/include/Nazara/Noise/Perlin4D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzPerlin4D : public NzAbstract4DNoise, public NzNoiseBase +template class NzPerlin4D : public NzAbstract4DNoise, public NzNoiseBase { public: NzPerlin4D(); diff --git a/include/Nazara/Noise/Simplex2D.hpp b/include/Nazara/Noise/Simplex2D.hpp index 0f2f5ac62..f07df9e46 100644 --- a/include/Nazara/Noise/Simplex2D.hpp +++ b/include/Nazara/Noise/Simplex2D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzSimplex2D : public NzAbstract2DNoise, public NzNoiseBase +template class NzSimplex2D : public NzAbstract2DNoise, public NzNoiseBase { public: NzSimplex2D(); diff --git a/include/Nazara/Noise/Simplex3D.hpp b/include/Nazara/Noise/Simplex3D.hpp index ebb2ae1a1..91b11cdd2 100644 --- a/include/Nazara/Noise/Simplex3D.hpp +++ b/include/Nazara/Noise/Simplex3D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzSimplex3D : public NzAbstract3DNoise, public NzNoiseBase +template class NzSimplex3D : public NzAbstract3DNoise, public NzNoiseBase { public: NzSimplex3D(); diff --git a/include/Nazara/Noise/Simplex4D.hpp b/include/Nazara/Noise/Simplex4D.hpp index be5c9b7bd..57d9f5945 100644 --- a/include/Nazara/Noise/Simplex4D.hpp +++ b/include/Nazara/Noise/Simplex4D.hpp @@ -12,7 +12,7 @@ #include #include -template class NAZARA_API NzSimplex4D : public NzAbstract4DNoise, public NzNoiseBase +template class NzSimplex4D : public NzAbstract4DNoise, public NzNoiseBase { public: NzSimplex4D();