IAP GITLAB

Skip to content
Snippets Groups Projects
Trajectory.h 1.38 KiB
Newer Older
 * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
 *
 * See file AUTHORS for a list of contributors.
 *
 * This software is distributed under the terms of the GNU General Public
 * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
 * the license.
 */

#ifndef _include_TRAJECTORY_H
#define _include_TRAJECTORY_H

#include <corsika/geometry/Point.h>
#include <corsika/units/PhysicalUnits.h>

namespace corsika::geometry {

  template <typename T>
  class Trajectory : public T {
ralfulrich's avatar
ralfulrich committed
    corsika::units::si::TimeType fTimeLength;
ralfulrich's avatar
ralfulrich committed
    using T::GetPosition;
ralfulrich's avatar
ralfulrich committed
    Trajectory(T const& theT, corsika::units::si::TimeType timeLength)
        : T(theT)
        , fTimeLength(timeLength) {}
    /*Point GetPosition(corsika::units::si::TimeType t) const {
      return fTraj.GetPosition(t + fTStart);
ralfulrich's avatar
ralfulrich committed

    Point GetPosition(double u) const { return T::GetPosition(fTimeLength * u); }
Maximilian Reininghaus's avatar
Maximilian Reininghaus committed
    corsika::units::si::TimeType GetDuration() const { return fTimeLength; }
ralfulrich's avatar
ralfulrich committed

    corsika::units::si::LengthType GetDistance(corsika::units::si::TimeType t) const {
ralfulrich's avatar
ralfulrich committed
      assert(t > fTimeLength);
      assert(t >= 0 * corsika::units::si::second);
      return T::ArcLength(0, t);
    void LimitEndTo(corsika::units::si::LengthType limit) {
ralfulrich's avatar
ralfulrich committed
      fTimeLength = T::TimeFromArclength(limit);
  };

} // namespace corsika::geometry

#endif