@@ -27,26 +27,36 @@ using quantities::si::Radian;
27
27
28
28
template <typename InertialFrame, typename ThisFrame>
29
29
BodyCentredBodyDirectionDynamicFrame<InertialFrame, ThisFrame>::
30
- BodyCentredBodyDirectionDynamicFrame (
31
- not_null<Ephemeris<InertialFrame> const *> const ephemeris,
32
- not_null<MassiveBody const *> const primary,
33
- not_null<MassiveBody const *> const secondary)
30
+ BodyCentredBodyDirectionDynamicFrame (
31
+ not_null<Ephemeris<InertialFrame> const *> const ephemeris,
32
+ not_null<MassiveBody const *> const primary,
33
+ not_null<MassiveBody const *> const secondary)
34
34
: ephemeris_(ephemeris),
35
35
primary_ (primary),
36
36
secondary_(secondary),
37
+ compute_gravitational_acceleration_on_primary_(
38
+ [this ](Position<InertialFrame> const & position, Instant const & t) {
39
+ return ephemeris_->ComputeGravitationalAccelerationOnMassiveBody (
40
+ primary_, t);
41
+ }),
37
42
primary_trajectory_ ([t = ephemeris_->trajectory (primary_)] { return t; }),
38
43
secondary_trajectory_(ephemeris_->trajectory (secondary_)) {}
39
44
40
45
template <typename InertialFrame, typename ThisFrame>
41
46
BodyCentredBodyDirectionDynamicFrame<InertialFrame, ThisFrame>::
42
- BodyCentredBodyDirectionDynamicFrame (
43
- not_null<Ephemeris<InertialFrame> const *> ephemeris,
44
- std::function<not_null<Trajectory<InertialFrame> const *>()>
45
- primary_trajectory,
46
- not_null<MassiveBody const *> secondary)
47
+ BodyCentredBodyDirectionDynamicFrame (
48
+ not_null<Ephemeris<InertialFrame> const *> ephemeris,
Has a conversation. Original line has a conversation.
49
+ std::function<not_null<Trajectory<InertialFrame> const *>()>
50
+ primary_trajectory,
51
+ not_null<MassiveBody const *> secondary)
47
52
: ephemeris_(ephemeris),
48
53
primary_(nullptr ),
49
54
secondary_(secondary),
55
+ compute_gravitational_acceleration_on_primary_(
56
+ [this ](Position<InertialFrame> const & position, Instant const & t) {
57
+ return ephemeris_->ComputeGravitationalAccelerationOnMasslessBody (
58
+ position, t);
59
+ }),
50
60
primary_trajectory_(primary_trajectory),
51
61
secondary_trajectory_(ephemeris_->trajectory (secondary_)) {}
52
62
@@ -117,15 +127,13 @@ MotionOfThisFrame(Instant const& t) const {
117
127
DegreesOfFreedom<InertialFrame> const secondary_degrees_of_freedom =
118
128
secondary_trajectory_->EvaluateDegreesOfFreedom (t);
119
129
130
+ // TODO(egg): eventually we want to add the intrinsic acceleration here.
120
131
Vector<Acceleration, InertialFrame> const primary_acceleration =
121
- // TODO(egg): eventually we want to add the intrinsic acceleration here.
122
- primary_ == nullptr
123
- ? ephemeris_->ComputeGravitationalAccelerationOnMasslessBody (
124
- primary_degrees_of_freedom.position (), t)
125
- : ephemeris_->ComputeGravitationalAccelerationOnMassiveBody (primary_,
126
- t);
132
+ compute_gravitational_acceleration_on_primary_ (
133
+ primary_degrees_of_freedom.position (), t);
134
+
127
135
Vector<Acceleration, InertialFrame> const secondary_acceleration =
128
- ephemeris_->ComputeGravitationalAccelerationOnMassiveBody (secondary_, t);
136
+ - ephemeris_->ComputeGravitationalAccelerationOnMassiveBody (secondary_, t);
129
137
130
138
auto const to_this_frame = ToThisFrameAtTime (t);
131
139