OpenWalnut  1.5.0dev
WTractAdapter.h
1 //---------------------------------------------------------------------------
2 //
3 // Project: OpenWalnut ( http://www.openwalnut.org )
4 //
5 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6 // For more information see http://www.openwalnut.org/copying
7 //
8 // This file is part of OpenWalnut.
9 //
10 // OpenWalnut is free software: you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // OpenWalnut is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22 //
23 //---------------------------------------------------------------------------
24 
25 #ifndef WTRACTADAPTER_H
26 #define WTRACTADAPTER_H
27 
28 #include <memory>
29 #include <vector>
30 
31 
32 #include "../common/math/linearAlgebra/WPosition.h"
33 
34 /**
35  * Adapter
36  */
38 {
39 public:
40  /**
41  * Constructs a new WTract which has \ref numPoints points and a startIndex inside of the
42  * given components array.
43  *
44  * \param pointComponents Array where the components of the tract points are inside of
45  * \param startIndex The position inside of the components array of the first x coordinate.
46  * \param numPoints How many points this tract has
47  */
48  WTractAdapter( std::shared_ptr< const std::vector< float > > pointComponents, size_t startIndex, size_t numPoints );
49 
50  /**
51  * How many positions this tract incorporates.
52  *
53  * \return number of points
54  */
55  size_t numPoints() const;
56 
57  /**
58  * Constructs and returns a \ref WPosition out of the i'th position of this tract.
59  *
60  * \param index The index of the position of this tract. It may start at \c 0 and is always
61  * smaller than \ref numPoints().
62  *
63  * \return The i'th position of this tract as \ref WPosition.
64  */
65  WPosition operator[]( size_t index ) const;
66 
67 // void reset( std::shared_ptr< const WTractData > tracts, size_t startIndex, size_t numPoints )
68 
69 protected:
70 private:
71  /**
72  * The array where the components of this tracts live. But you will need the starting position
73  * and the length of the tract to access them.
74  */
75  std::shared_ptr< const std::vector< float > > m_pointComponents;
76 
77  /**
78  * How many \e points aka WPositions this tract consists of.
79  */
80  size_t m_numPoints;
81 
82  /**
83  * The index of the x-component of the first point of this tract inside the \ref m_pointComponents array.
84  */
85  size_t m_startIndex;
86 };
87 
88 inline size_t WTractAdapter::numPoints() const
89 {
90  return m_numPoints;
91 }
92 
93 #endif // WTRACTADAPTER_H
This only is a 3d double vector.
size_t m_numPoints
How many points aka WPositions this tract consists of.
Definition: WTractAdapter.h:80
size_t numPoints() const
How many positions this tract incorporates.
Definition: WTractAdapter.h:88
WPosition operator[](size_t index) const
Constructs and returns a WPosition out of the i'th position of this tract.
std::shared_ptr< const std::vector< float > > m_pointComponents
The array where the components of this tracts live.
Definition: WTractAdapter.h:75
WTractAdapter(std::shared_ptr< const std::vector< float > > pointComponents, size_t startIndex, size_t numPoints)
Constructs a new WTract which has numPoints points and a startIndex inside of the given components ar...
size_t m_startIndex
The index of the x-component of the first point of this tract inside the m_pointComponents array.
Definition: WTractAdapter.h:85