FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
SensorFrame.h
1#pragma once
2
11#include <fhsim/simobject/SimObject.h>
12
13class PrintDuringExec;
14
36{
37public:
42 explicit SensorFrame(ISimObjectCreator* creator);
43
54 SensorFrame(const double mountOffset[3], const double mountDirection[3]);
55
62 void SensorPosition(double T, const double* X, double out[3]) const;
63
70 void BeamDirection(double T, const double* X, double out[3]) const;
71
78 void SensorPositionOf(const double bodyPosition[3], const double bodyQuaternion[4], double out[3]) const;
79
85 void BeamDirectionOf(const double bodyQuaternion[4], double out[3]) const;
86
88 const double* MountOffset() const { return m_mountOffset; }
89
91 const double* MountDirection() const { return m_mountDirection; }
92
93private:
99 void NormalizeQuaternion(const double quaternion[4], double out[4]) const;
100
102 static const double kQuaternionTolerance;
103
104 ISignalPort* m_inPos = nullptr;
105 ISignalPort* m_inQuater = nullptr;
106 PrintDuringExec* m_print = nullptr;
107
108 double m_mountOffset[3] = {0.0, 0.0, 0.0};
109 double m_mountDirection[3] = {1.0, 0.0, 0.0};
110
111 mutable bool m_quaternionWarningGiven = false;
112};
Definition SensorFrame.h:36
void BeamDirectionOf(const double bodyQuaternion[4], double out[3]) const
SensorFrame(ISimObjectCreator *creator)
void BeamDirection(double T, const double *X, double out[3]) const
const double * MountOffset() const
The mounting offset in the body frame, m.
Definition SensorFrame.h:88
SensorFrame(const double mountOffset[3], const double mountDirection[3])
void SensorPosition(double T, const double *X, double out[3]) const
void SensorPositionOf(const double bodyPosition[3], const double bodyQuaternion[4], double out[3]) const
const double * MountDirection() const
The beam direction in the body frame.
Definition SensorFrame.h:91