Skip to content

Commit d6bb4e7

Browse files
authored
Merge pull request #3190 from pleroy/Renderer
Convert Renderer and its test to DiscreteTraject0ry
2 parents 37005d9 + 24da387 commit d6bb4e7

File tree

4 files changed

+102
-83
lines changed

4 files changed

+102
-83
lines changed

ksp_plugin/renderer.cpp

+21-21
Original file line numberDiff line numberDiff line change
@@ -74,52 +74,52 @@ Vessel const& Renderer::GetTargetVessel() const {
7474
return *target_->vessel;
7575
}
7676

77-
not_null<std::unique_ptr<DiscreteTrajectory<World>>>
77+
DiscreteTraject0ry<World>
7878
Renderer::RenderBarycentricTrajectoryInWorld(
7979
Instant const& time,
80-
DiscreteTrajectory<Barycentric>::Iterator const& begin,
81-
DiscreteTrajectory<Barycentric>::Iterator const& end,
80+
DiscreteTraject0ry<Barycentric>::iterator const& begin,
81+
DiscreteTraject0ry<Barycentric>::iterator const& end,
8282
Position<World> const& sun_world_position,
8383
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const {
8484
auto const trajectory_in_plotting_frame =
8585
RenderBarycentricTrajectoryInPlotting(begin, end);
8686
auto trajectory_in_world =
8787
RenderPlottingTrajectoryInWorld(time,
88-
trajectory_in_plotting_frame->begin(),
89-
trajectory_in_plotting_frame->end(),
88+
trajectory_in_plotting_frame.begin(),
89+
trajectory_in_plotting_frame.end(),
9090
sun_world_position,
9191
planetarium_rotation);
9292
return trajectory_in_world;
9393
}
9494

95-
not_null<std::unique_ptr<DiscreteTrajectory<Navigation>>>
95+
DiscreteTraject0ry<Navigation>
9696
Renderer::RenderBarycentricTrajectoryInPlotting(
97-
DiscreteTrajectory<Barycentric>::Iterator const& begin,
98-
DiscreteTrajectory<Barycentric>::Iterator const& end) const {
99-
auto trajectory = make_not_null_unique<DiscreteTrajectory<Navigation>>();
97+
DiscreteTraject0ry<Barycentric>::iterator const& begin,
98+
DiscreteTraject0ry<Barycentric>::iterator const& end) const {
99+
DiscreteTraject0ry<Navigation> trajectory;
100100
for (auto it = begin; it != end; ++it) {
101101
auto const& [time, degrees_of_freedom] = *it;
102102
if (target_) {
103-
auto const& prediction = target_->vessel->prediction();
104-
if (time < prediction.t_min()) {
103+
auto const prediction = target_->vessel->prediction();
104+
if (time < prediction->t_min()) {
105105
continue;
106-
} else if (time > prediction.t_max()) {
106+
} else if (time > prediction->t_max()) {
107107
break;
108108
}
109109
}
110-
trajectory->Append(time, BarycentricToPlotting(time)(degrees_of_freedom));
110+
trajectory.Append(time, BarycentricToPlotting(time)(degrees_of_freedom));
111111
}
112112
return trajectory;
113113
}
114114

115-
not_null<std::unique_ptr<DiscreteTrajectory<World>>>
115+
DiscreteTraject0ry<World>
116116
Renderer::RenderPlottingTrajectoryInWorld(
117117
Instant const& time,
118-
DiscreteTrajectory<Navigation>::Iterator const& begin,
119-
DiscreteTrajectory<Navigation>::Iterator const& end,
118+
DiscreteTraject0ry<Navigation>::iterator const& begin,
119+
DiscreteTraject0ry<Navigation>::iterator const& end,
120120
Position<World> const& sun_world_position,
121121
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const {
122-
auto trajectory = make_not_null_unique<DiscreteTrajectory<World>>();
122+
DiscreteTraject0ry<World> trajectory;
123123

124124
// Dinanzi a me non fuor cose create
125125
// se non etterne, e io etterno duro.
@@ -160,7 +160,7 @@ Renderer::RenderPlottingTrajectoryInWorld(
160160
geometry::Permutation<Navigation,
161161
World>::CoordinatePermutation::YXZ)(
162162
navigation_degrees_of_freedom.velocity())};
163-
trajectory->Append(time, world_degrees_of_freedom);
163+
trajectory.Append(time, world_degrees_of_freedom);
164164
}
165165
return trajectory;
166166
}
@@ -205,7 +205,7 @@ OrthogonalMap<Frenet<Navigation>, World> Renderer::FrenetToWorld(
205205
OrthogonalMap<Frenet<Navigation>, World> Renderer::FrenetToWorld(
206206
Vessel const& vessel,
207207
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const {
208-
auto const back = vessel.psychohistory().back();
208+
auto const back = vessel.psychohistory()->back();
209209
DegreesOfFreedom<Barycentric> const& barycentric_degrees_of_freedom =
210210
back.degrees_of_freedom;
211211
DegreesOfFreedom<Navigation> const plotting_frame_degrees_of_freedom =
@@ -224,7 +224,7 @@ OrthogonalMap<Frenet<Navigation>, World> Renderer::FrenetToWorld(
224224
Vessel const& vessel,
225225
NavigationFrame const& navigation_frame,
226226
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const {
227-
auto const back = vessel.psychohistory().back();
227+
auto const back = vessel.psychohistory()->back();
228228
auto const to_navigation = navigation_frame.ToThisFrameAtTime(back.time);
229229
auto const from_navigation = to_navigation.orthogonal_map().Inverse();
230230
auto const frenet_frame =
@@ -315,7 +315,7 @@ Renderer::Target::Target(
315315
make_not_null_unique<
316316
BodyCentredBodyDirectionDynamicFrame<Barycentric, Navigation>>(
317317
ephemeris,
318-
[this]() -> auto& { return this->vessel->prediction(); },
318+
[this]() -> auto& { return *this->vessel->prediction(); },
319319
celestial->body())) {}
320320

321321
} // namespace internal_renderer

ksp_plugin/renderer.hpp

+11-11
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "ksp_plugin/celestial.hpp"
1313
#include "ksp_plugin/frames.hpp"
1414
#include "ksp_plugin/vessel.hpp"
15-
#include "physics/discrete_trajectory.hpp"
15+
#include "physics/discrete_traject0ry.hpp"
1616
#include "physics/dynamic_frame.hpp"
1717
#include "physics/ephemeris.hpp"
1818
#include "physics/rigid_motion.hpp"
@@ -29,7 +29,7 @@ using geometry::OrthogonalMap;
2929
using geometry::Position;
3030
using geometry::RigidTransformation;
3131
using geometry::Rotation;
32-
using physics::DiscreteTrajectory;
32+
using physics::DiscreteTraject0ry;
3333
using physics::Ephemeris;
3434
using physics::Frenet;
3535
using physics::RigidMotion;
@@ -72,29 +72,29 @@ class Renderer {
7272
// and others in this class, |sun_world_position| is the current position of
7373
// the sun in |World| space as returned by |Planetarium.fetch.Sun.position|;
7474
// it is used to define the relation between |WorldSun| and |World|.
75-
virtual not_null<std::unique_ptr<DiscreteTrajectory<World>>>
75+
virtual DiscreteTraject0ry<World>
7676
RenderBarycentricTrajectoryInWorld(
7777
Instant const& time,
78-
DiscreteTrajectory<Barycentric>::Iterator const& begin,
79-
DiscreteTrajectory<Barycentric>::Iterator const& end,
78+
DiscreteTraject0ry<Barycentric>::iterator const& begin,
79+
DiscreteTraject0ry<Barycentric>::iterator const& end,
8080
Position<World> const& sun_world_position,
8181
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const;
8282

8383
// Returns a trajectory in the current plotting frame corresponding to the
8484
// trajectory defined by |begin| and |end|. If there is a target vessel, its
8585
// prediction must not be empty.
86-
virtual not_null<std::unique_ptr<DiscreteTrajectory<Navigation>>>
86+
virtual DiscreteTraject0ry<Navigation>
8787
RenderBarycentricTrajectoryInPlotting(
88-
DiscreteTrajectory<Barycentric>::Iterator const& begin,
89-
DiscreteTrajectory<Barycentric>::Iterator const& end) const;
88+
DiscreteTraject0ry<Barycentric>::iterator const& begin,
89+
DiscreteTraject0ry<Barycentric>::iterator const& end) const;
9090

9191
// Returns a trajectory in |World| corresponding to the trajectory defined by
9292
// |begin| and |end| in the current plotting frame.
93-
virtual not_null<std::unique_ptr<DiscreteTrajectory<World>>>
93+
virtual DiscreteTraject0ry<World>
9494
RenderPlottingTrajectoryInWorld(
9595
Instant const& time,
96-
DiscreteTrajectory<Navigation>::Iterator const& begin,
97-
DiscreteTrajectory<Navigation>::Iterator const& end,
96+
DiscreteTraject0ry<Navigation>::iterator const& begin,
97+
DiscreteTraject0ry<Navigation>::iterator const& end,
9898
Position<World> const& sun_world_position,
9999
Rotation<Barycentric, AliceSun> const& planetarium_rotation) const;
100100

ksp_plugin_test/mock_vessel.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class MockVessel : public Vessel {
2222
(not_null<Celestial const*> parent),
2323
(override));
2424

25-
MOCK_METHOD(DiscreteTrajectory<Barycentric> const&,
25+
MOCK_METHOD(DiscreteTrajectorySegmentIterator<Barycentric>,
2626
psychohistory,
2727
(),
2828
(const, override));
29-
MOCK_METHOD(DiscreteTrajectory<Barycentric> const&,
29+
MOCK_METHOD(DiscreteTrajectorySegmentIterator<Barycentric>,
3030
prediction,
3131
(),
3232
(const, override));

0 commit comments

Comments
 (0)