54 using ThirdBodyList = std::vector<ThirdBodyForce>;
56 bool useDrag()
const{
return useDrag_;}
57 void useDrag(
bool useDrag){useDrag_ = useDrag;}
59 bool useSRP()
const{
return useSRP_;}
60 void useSRP(
bool useSRP){useSRP_ = useSRP;}
62 bool useRelativityCorrection()
const{
return useRelativityCorrection_;}
63 void useRelativityCorrection(
bool useRelativityCorrection){useRelativityCorrection_ = useRelativityCorrection;}
72 const DragForce& drag()
const {
return drag_;}
80 GravityForce& gravity();
84 PointMassForce& pointMass();
88 BodyAttraction& bodyAttraction();
91 const BodyAttraction& bodyAttraction()
const;
94 EBodyAttractionType bodyAttractionType()
const;
98 ThirdBodyForce* addThirdBody(Body* body);
101 ThirdBodyForce* addThirdBody(ThirdBodyForce& force);
105 ThirdBodyForce* getThirdBody(Body* body);
109 ThirdBodyForce* getThirdBody(StringView bodyName);
114 bool useDrag_{
false};
116 bool useRelativityCorrection_{
false};
117 SharedPtr<Body> centralBody_;
119 SolarRadiationPressure srp_;
120 ThirdBodyList thirdBodies_;
121 ClonePtr<BodyAttraction> bodyAttraction_;
123 bool useMoonGravity_{
false};
126 bool useMoonGravity()
const{
return useMoonGravity_;}
127 void useMoonGravity(
bool useMoonGravity){useMoonGravity_ = useMoonGravity;}
128 double moonGravity()
const{
return moonGravity_;}
129 void setMoonGravity(
double moonGravity){moonGravity_ = moonGravity;}