Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: a26020a2ea64
Choose a base ref
...
head repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3b0ba6cd95aa
Choose a head ref
  • 3 commits
  • 3 files changed
  • 1 contributor

Commits on Oct 27, 2021

  1. Forgetting with an iterator.

    pleroy committed Oct 27, 2021
    Copy the full SHA
    8f37d55 View commit details
  2. Copy the full SHA
    cbb358a View commit details
  3. Merge pull request #3171 from pleroy/MinorImprovements

    Some minor improvements to trajectories
    pleroy authored Oct 27, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    3b0ba6c View commit details
Showing with 24 additions and 0 deletions.
  1. +2 −0 physics/discrete_traject0ry.hpp
  2. +10 −0 physics/discrete_traject0ry_body.hpp
  3. +12 −0 physics/discrete_trajectory_segment_iterator_body.hpp
2 changes: 2 additions & 0 deletions physics/discrete_traject0ry.hpp
Original file line number Diff line number Diff line change
@@ -89,7 +89,9 @@ class DiscreteTraject0ry : public Trajectory<Frame> {
void DeleteSegments(SegmentIterator begin);

void ForgetAfter(Instant const& t);
void ForgetAfter(iterator it);
void ForgetBefore(Instant const& t);
void ForgetBefore(iterator it);

void Append(Instant const& t,
DegreesOfFreedom<Frame> const& degrees_of_freedom);
10 changes: 10 additions & 0 deletions physics/discrete_traject0ry_body.hpp
Original file line number Diff line number Diff line change
@@ -233,13 +233,23 @@ void DiscreteTraject0ry<Frame>::ForgetAfter(Instant const& t) {
}
}

template<typename Frame>
void DiscreteTraject0ry<Frame>::ForgetAfter(iterator const it) {
ForgetAfter(it->time);
}

template<typename Frame>
void DiscreteTraject0ry<Frame>::ForgetBefore(Instant const& t) {
auto const sit = FindSegment(t);
sit->ForgetBefore(t);
segments_->erase(segments_->begin(), sit);
}

template<typename Frame>
void DiscreteTraject0ry<Frame>::ForgetBefore(iterator const it) {
ForgetBefore(it->time);
}

template<typename Frame>
void DiscreteTraject0ry<Frame>::Append(
Instant const& t,
12 changes: 12 additions & 0 deletions physics/discrete_trajectory_segment_iterator_body.hpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#pragma once

#include "physics/discrete_trajectory_segment_iterator.hpp"

namespace principia {
@@ -7,44 +9,51 @@ namespace internal_discrete_trajectory_segment_iterator {
template<typename Frame>
DiscreteTrajectorySegmentIterator<Frame>&
DiscreteTrajectorySegmentIterator<Frame>::operator++() {
CHECK_NOTNULL(segments_);
++iterator_;
return *this;
}

template<typename Frame>
DiscreteTrajectorySegmentIterator<Frame>&
DiscreteTrajectorySegmentIterator<Frame>::operator--() {
CHECK_NOTNULL(segments_);
--iterator_;
return *this;
}

template<typename Frame>
DiscreteTrajectorySegmentIterator<Frame>
DiscreteTrajectorySegmentIterator<Frame>::operator++(int) { // NOLINT
CHECK_NOTNULL(segments_);
return DiscreteTrajectorySegmentIterator(segments_, iterator_++);
}

template<typename Frame>
DiscreteTrajectorySegmentIterator<Frame>
DiscreteTrajectorySegmentIterator<Frame>::operator--(int) { // NOLINT
CHECK_NOTNULL(segments_);
return DiscreteTrajectorySegmentIterator(segments_, iterator_--);
}

template<typename Frame>
typename DiscreteTrajectorySegmentIterator<Frame>::reference
DiscreteTrajectorySegmentIterator<Frame>::operator*() const {
CHECK_NOTNULL(segments_);
return *iterator_;
}

template<typename Frame>
typename DiscreteTrajectorySegmentIterator<Frame>::pointer
DiscreteTrajectorySegmentIterator<Frame>::operator->() const {
CHECK_NOTNULL(segments_);
return &*iterator_;
}

template<typename Frame>
bool DiscreteTrajectorySegmentIterator<Frame>::operator==(
DiscreteTrajectorySegmentIterator const& other) const {
CHECK_NOTNULL(segments_);
return segments_ == other.segments_ && iterator_ == other.iterator_;
}

@@ -63,17 +72,20 @@ DiscreteTrajectorySegmentIterator<Frame>::DiscreteTrajectorySegmentIterator(

template<typename Frame>
bool DiscreteTrajectorySegmentIterator<Frame>::is_begin() const {
CHECK_NOTNULL(segments_);
return iterator_ == segments_->begin();
}

template<typename Frame>
bool DiscreteTrajectorySegmentIterator<Frame>::is_end() const {
CHECK_NOTNULL(segments_);
return iterator_ == segments_->end();
}

template<typename Frame>
DiscreteTrajectorySegmentRange<DiscreteTrajectorySegmentIterator<Frame>>
DiscreteTrajectorySegmentIterator<Frame>::segments() const {
CHECK_NOTNULL(segments_);
return {DiscreteTrajectorySegmentIterator(segments_, segments_->begin()),
DiscreteTrajectorySegmentIterator(segments_, segments_->end())};
}