X-Git-Url: http://git.treefish.org/~alex/seamulator.git/blobdiff_plain/94e405360849659ff951816a13cf510f11a7eee7..e19dd20d04a2a92b3d91bd25a69210a2351b08c9:/sea.h?ds=inline diff --git a/sea.h b/sea.h index 6a9cd0a..6e24ac3 100644 --- a/sea.h +++ b/sea.h @@ -1,13 +1,34 @@ #pragma once -#include "watersurface.h" +#include +#include + +#include "seafwd.h" + +#include "complexpair.h" +#include "watersurfacefwd.h" class Sea { public: - Sea(WaterSurface& surface); + Sea(WaterSurfacePtr surface); void update(); private: - WaterSurface& m_surface; + static const double PHILLIPS_CONSTANT; + static const double GRAVITATIONAL_CONSTANT; + + WaterSurfacePtr m_surface; + double m_windDirection[2]; + double m_windSpeed; + std::random_device m_randomDevice; + std::mt19937 m_randomGenerator; + std::normal_distribution<> m_normalDistribution; + std::vector m_fourierAmplitudes; + + double phillipsSpectrum(double k_x, double k_y) const; + ComplexPair generateFourierAmplitude(double k_x, double k_y); + ComplexPair& fourierAmplitudeAt(int n, int m); + void generateFourierAmplitudes(); + double spatialFrequencyForIndex(int n) const; };