Marine systems simulation
Loading...
Searching...
No Matches
BathymetryWaves.h
1#pragma once
3
4#include <marenv/seafloor/BathymetryField.h>
5#include <marenv/seafloor/BathymetryWavesSpec.h>
6
7#include <cmath>
8#include <memory>
9
10namespace marenv::seafloor
11{
24{
25public:
36 BathymetryWaves(double averageDepth,
37 int numComponents,
38 double sumAmplitudes,
39 double minWavelength,
40 double maxWavelength,
41 uint32_t seed);
43
44 ~BathymetryWaves() override = default;
45
53 Status GetDepth(const double pos[2], double& depthOut) override;
54
62 Status ComputeSurfaceUnitNormal(const double pos[2], double unitNormalOut[3]) override;
63
68 std::shared_ptr<BathymetryWavesSpec> GetSpec() { return m_spec; }
69
79 Status GetSeabedSigma(const double pos[3], double& sigmaOut) override;
80
90 Status GetSeabedTau(const double pos[3], double& tauOut) override;
91
101 Status GetSeabedRho(const double pos[3], double& rhoOut) override;
102
115 Status ComputeRayIntersection(const double origin[3], const double direction[3], double& distanceOut, double maxSearchDistance = 100, double startSearchDistance = -1, double stepSize = 1.0, double convergenceTolerance = 0.01) override;
116
117private:
119
120 std::shared_ptr<BathymetryWavesSpec> m_spec;
121
129 double EstimateDistanceToSeafloor(const double origin[3], const double direction[3]);
130};
131} // namespace marenv::seafloor
Definition BathymetryField.h:24
Definition BathymetryWaves.h:24
~BathymetryWaves() override=default
Default destructor.
Status GetDepth(const double pos[2], double &depthOut) override
Status GetSeabedSigma(const double pos[3], double &sigmaOut) override
Status ComputeRayIntersection(const double origin[3], const double direction[3], double &distanceOut, double maxSearchDistance=100, double startSearchDistance=-1, double stepSize=1.0, double convergenceTolerance=0.01) override
Status GetSeabedRho(const double pos[3], double &rhoOut) override
Status ComputeSurfaceUnitNormal(const double pos[2], double unitNormalOut[3]) override
Status GetSeabedTau(const double pos[3], double &tauOut) override
std::shared_ptr< BathymetryWavesSpec > GetSpec()
Definition BathymetryWaves.h:68
BathymetryWaves(double averageDepth, int numComponents, double sumAmplitudes, double minWavelength, double maxWavelength, uint32_t seed)
Status
Definition marenv.h:40