From d484a18da543e2d93be892532e3cd81a4cabd54c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Oudin?= Date: Tue, 13 Feb 2018 17:03:11 +0100 Subject: [PATCH] Add some structure for the ground. --- FlatGround.cpp | 6 ++++++ FlatGround.hpp | 6 ++++++ Ground.cpp | 0 Ground.hpp | 8 ++++++++ Makefile | 3 +++ PerlinGround.cpp | 9 +++++++++ PerlinGround.hpp | 12 ++++++++++++ 7 files changed, 44 insertions(+) create mode 100644 FlatGround.cpp create mode 100644 FlatGround.hpp create mode 100644 Ground.cpp create mode 100644 Ground.hpp create mode 100644 PerlinGround.cpp create mode 100644 PerlinGround.hpp diff --git a/FlatGround.cpp b/FlatGround.cpp new file mode 100644 index 0000000..b3bf243 --- /dev/null +++ b/FlatGround.cpp @@ -0,0 +1,6 @@ +#include "FlatGround.hpp" + + +double FlatGround::operator() (double, double) const { + return 0. ; +} diff --git a/FlatGround.hpp b/FlatGround.hpp new file mode 100644 index 0000000..e2ee420 --- /dev/null +++ b/FlatGround.hpp @@ -0,0 +1,6 @@ +#pragma once +#include "Ground.hpp" + +class FlatGround : public Ground { + double operator() (double, double) const; +}; diff --git a/Ground.cpp b/Ground.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Ground.hpp b/Ground.hpp new file mode 100644 index 0000000..c03f06a --- /dev/null +++ b/Ground.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include "common_structures.hpp" + +class Ground { + public: + virtual double operator() (double, double) const = 0; +}; diff --git a/Makefile b/Makefile index bb29ca1..95d1bb2 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,9 @@ OBJS=Implicit.o \ Mesh.o \ spheroid.o \ Ball.o \ + Ground.o \ + FlatGround.o \ + PerlinGround.o \ PerlinNoise.o \ util/ObjParser.o \ MarchingCubes.o \ diff --git a/PerlinGround.cpp b/PerlinGround.cpp new file mode 100644 index 0000000..081a46b --- /dev/null +++ b/PerlinGround.cpp @@ -0,0 +1,9 @@ +#include "PerlinGround.hpp" + +PerlinGround::PerlinGround() : surface(PerlinNoise()) {} +PerlinGround::PerlinGround(unsigned int seed) : surface(PerlinNoise(seed)) {} + +double PerlinGround::operator() (double x, double z) const { + return surface.noise(x, z); +} + diff --git a/PerlinGround.hpp b/PerlinGround.hpp new file mode 100644 index 0000000..df2add7 --- /dev/null +++ b/PerlinGround.hpp @@ -0,0 +1,12 @@ +#pragma once +#include "Ground.hpp" +#include "PerlinNoise.hpp" + +class PerlinGround : public Ground { + public: + PerlinGround(); + PerlinGround(unsigned int seed); + double operator() (double, double) const; + private: + PerlinNoise surface; +};