source: rrlib_geometry/curves/tCardinalSplineCurve.h @ 60:a22756932ab5

Last change on this file since 60:a22756932ab5 was 60:a22756932ab5, checked in by Tobias Föhst <foehst@…>, 6 years ago

Added and updated license information

File size: 4.0 KB
Line 
1//
2// You received this file as part of RRLib
3// Robotics Research Library
4//
5// Copyright (C) Finroc GbR (finroc.org)
6//
7// This program is free software; you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation; either version 2 of the License, or
10// (at your option) any later version.
11//
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License along
18// with this program; if not, write to the Free Software Foundation, Inc.,
19// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20//
21//----------------------------------------------------------------------
22/*!\file    tCardinalSplineCurve.h
23 *
24 * \author  Tobias Foehst
25 *
26 * \date    2009-05-26
27 *
28 * \brief   Contains tCardinalSplineCurve
29 *
30 * \b tBezierCurve
31 *
32 * A few words for tCardinalSplineCurve
33 *
34 */
35//----------------------------------------------------------------------
36#ifndef __rrlib__geometry__curves__tCardinalSplineCurve_h__
37#define __rrlib__geometry__curves__tCardinalSplineCurve_h__
38
39#include "rrlib/geometry/curves/tSplineCurve.h"
40//----------------------------------------------------------------------
41// External includes (system with <>, local with "")
42//----------------------------------------------------------------------
43
44//----------------------------------------------------------------------
45// Internal includes with ""
46//----------------------------------------------------------------------
47
48//----------------------------------------------------------------------
49// Debugging
50//----------------------------------------------------------------------
51
52//----------------------------------------------------------------------
53// Namespace declaration
54//----------------------------------------------------------------------
55namespace rrlib
56{
57namespace geometry
58{
59
60//----------------------------------------------------------------------
61// Forward declarations / typedefs / enums
62//----------------------------------------------------------------------
63
64//----------------------------------------------------------------------
65// Class declaration
66//----------------------------------------------------------------------
67//! Short description of tLine
68/*! A more detailed description of tCardinalSplineCurve, which
69    Tobias Foehst hasn't done yet !!
70*/
71template <size_t Tdimension, typename TElement>
72class tCardinalSplineCurve : public tSplineCurve<Tdimension, TElement, 3>
73{
74  typedef geometry::tSplineCurve<Tdimension, TElement, 3> tSplineCurve;
75  typedef geometry::tShape<Tdimension, TElement> tShape;
76
77//----------------------------------------------------------------------
78// Public methods and typedefs
79//----------------------------------------------------------------------
80public:
81
82  tCardinalSplineCurve();
83
84  template <typename TIterator>
85  tCardinalSplineCurve(TIterator begin, TIterator end, double tension = 0.0);
86
87  inline double GetTension() const
88  {
89    return this->tension;
90  }
91
92  void SetTension(double tension);
93
94  virtual std::shared_ptr<const typename tSplineCurve::tBezierCurve> CreateBezierCurveForSegment(unsigned int i) const;
95
96//----------------------------------------------------------------------
97// Private fields and methods
98//----------------------------------------------------------------------
99private:
100
101  double tension;
102
103  virtual unsigned int GetSegmentForParameter(typename tSplineCurve::tParameter t) const;
104  virtual typename tSplineCurve::tParameter GetLocalParameter(typename tSplineCurve::tParameter t) const;
105
106};
107
108//----------------------------------------------------------------------
109// End of namespace declaration
110//----------------------------------------------------------------------
111}
112}
113
114
115#include "rrlib/geometry/curves/tCardinalSplineCurve.hpp"
116
117#endif
Note: See TracBrowser for help on using the repository browser.