Marine systems simulation
Loading...
Searching...
No Matches
VisualFlowPlane.h
1#pragma once
2
3#include <SimObject.h>
4#include <memory>
5#include <string>
6
7namespace environment
8{
9class EnvironmentProvider;
10}
11
12#ifdef FH_VISUALIZATION
13# include "visual/FlowPlane.h"
14#endif
15
16namespace environmentmodels
17{
18
46class VisualFlowPlane : public SimObject
47{
48public:
54 VisualFlowPlane(std::string SimObjectName, ISimObjectCreator* Creator);
55
57 void FinalSetup(const double T, const double* const X, ISimObjectCreator* Creator) override;
58
60 void OdeFcn(const double T, const double* const X, double* const XDot, const bool MajorTimeStep) override;
61
62#ifdef FH_VISUALIZATION
64 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* Creator);
65
67 virtual void RenderUpdate(const double T, const double* const X);
68#endif
69
70private:
72 environment::EnvironmentProvider* m_pEnvironment;
73
84 int m_computeFunctionType;
85#ifdef FH_VISUALIZATION
87 std::shared_ptr<visual::FlowPlane> m_flowPlane;
89 visual::FlowPlaneSettings m_settings;
91 visual::ComputeFunction m_computeFunction;
92#endif
93
94 // Initial (static) position and orientation
95 double m_position0[3];
96 double m_localX0[3];
97 double m_localY0[3];
98
99 // Optional second position for linear back-and-forth motion
100 double m_position1[3];
101 bool m_hasPosition2;
102 double m_positionPeriod;
103
104 // Optional continuous rotation around the plane’s own axes
105 double m_rotationPeriodX;
106 double m_rotationPeriodY;
107};
108
109} // namespace environmentmodels
Definition VisualFlowPlane.h:47
void OdeFcn(const double T, const double *const X, double *const XDot, const bool MajorTimeStep) override
ODE function for state updates.
VisualFlowPlane(std::string SimObjectName, ISimObjectCreator *Creator)
void FinalSetup(const double T, const double *const X, ISimObjectCreator *Creator) override
Final setup phase - retrieves Environment provider.
Environment SimObjects.
Definition Environment.h:24