Utilities to manipulate geometry vectors.The utilities include generic vector interface facilities allowing to use different vector types via templates. More...
Namespaces | |
| details | |
| dump | |
| Utilities to print vector types. | |
| extra | |
| Convenience utilities not directly related to vectors. | |
Classes | |
| class | CoordConstIterator |
| Constant iterator to vector coordinates. More... | |
| class | MiddlePointAccumulatorDim |
| Helper class to compute the middle point in a point set. More... | |
Typedefs | |
| template<typename Vector > | |
| using | coordinate_t = details::VectorScalar_t< Vector > |
| Type of coordinate of the specified vector type. More... | |
| template<typename Vector > | |
| using | CoordReader_t = decltype(details::makeCoordReader(&Vector::X)) |
| Type of a coordinate reader for a vector type. More... | |
| template<typename Vector > | |
| using | CoordManager_t = decltype(details::makeCoordManager(&Vector::X,&Vector::SetX)) |
| Type of a coordinate manager for a vector type. More... | |
| using | MiddlePointAccumulator = MiddlePointAccumulatorDim< 3U > |
| Middle-point accumulator for vectors of dimension 3. More... | |
Functions | |
| template<typename Vector , typename Coords > | |
| constexpr Vector | makeFromCoords (Coords &&coords) |
Creates a Vector object with coordinates from coords. More... | |
| template<typename Vector , typename Coords > | |
| unsigned int | fillCoords (Coords &dest, Vector const &src) |
| Fills a coordinate array with the coordinates of a vector. More... | |
| template<typename Vector > | |
| constexpr auto | coordManager (unsigned int n) |
| Returns an object that can be bound to a vector to manage one of its coordinates. More... | |
| template<typename Vector > | |
| constexpr auto | coordManager (unsigned int n, Vector &v) |
| Returns an object that can be bound to a vector to manage one of its coordinates. More... | |
| template<typename Vector > | |
| constexpr auto | bindCoord (Vector const &v, CoordReader_t< Vector > helper) |
| Binds the specified constant vector to the coordinate reader. More... | |
| template<typename Vector > | |
| auto | bindCoord (Vector &v, CoordManager_t< Vector > helper) -> details::BoundCoordManager< CoordManager_t< Vector >, Vector > |
| Binds the specified vector to the coordinate manager. More... | |
| template<typename Vector > | |
| auto | Xcoord (Vector &v) |
Returns an object to manage the coordinate X of the vector v. More... | |
| template<typename Vector > | |
| auto | Ycoord (Vector &v) |
Returns an object to manage the coordinate Y of the vector v. More... | |
| template<typename Vector > | |
| auto | Zcoord (Vector &v) |
Returns an object to manage the coordinate Z of the vector v. More... | |
| template<typename Vector > | |
| auto | Tcoord (Vector &v) |
Returns an object to manage the coordinate T of the vector v. More... | |
| template<typename Vector > | |
| auto | coord (Vector &v, unsigned int n) noexcept |
Returns an object to manage the coordinate n of a vector. More... | |
| template<typename Vector > | |
| constexpr auto | bindCoordManagers (Vector &v) |
| template<typename Vector > | |
| constexpr auto | bindCoordReaders (Vector const &v) |
| template<typename Vector > | |
| CoordConstIterator< Vector > | operator+ (typename CoordConstIterator< Vector >::difference_type n, CoordConstIterator< Vector > const &v) |
| template<typename Vector > | |
| auto | vector_cbegin (Vector const &v) |
Returns a const-iterator pointing to the first coordinate of v. More... | |
| template<typename Vector > | |
| auto | vector_cend (Vector const &v) |
Returns a const-iterator pointing after the last coordinate of v. More... | |
| template<typename Vector > | |
| auto | iterateCoords (Vector const &v) |
| Returns an object for ranged-for iteration on coordinates. More... | |
| template<typename Dest , typename Source > | |
| Dest | convertTo (Source const &v) |
Returns a vector of type Dest with the same content as a Src. More... | |
| template<typename Dest , typename Source > | |
| std::vector< Dest > | convertCollTo (std::vector< Source > const &coll) |
Returns a vector of type Dest with the same content as a Src. More... | |
| template<typename Vector , typename Pred > | |
| Vector | transformCoords (Vector const &v, Pred &&pred) |
| Returns a new vector applying a predicate to each component. More... | |
| template<> | |
| auto | norm (geo::Vector_t const &v) |
| template<> | |
| auto | mag2< TVector2 > (TVector2 const &v) |
Vector coordinate access abstraction | |
This group of utilities provides a common interface for tasks involving geometry vectors, which may have different interface. An example of that is the access of coordinates by an index: it is supported (and "slow") in Coordinate managersA "coordinate manager" is an object handling a specific coordinate out of a specific vector type; i.e., a coordinate manager object will manage for its entire lifetime the same coordinate, e.g. x or z. A coordinate manager can be:
Two types of managers are available:
Note that a coordinate is never returned as a reference, either mutable or constant. Handling a coordinate of a vector object: bound managersA bound coordinate manager can be created directly: geo::Point_t p { 1.0, 2.0, 3.0 };
px += 5.0;
will return something along the line of Functions If access by numeric index is necessary, geo::Vector_t const v { 1.0, 2.0, 3.0 };
for (unsigned c = 0; c < 3; ++c) {
auto vc = geo::vect::coord(v, c);
}
(note that for this example we have implicitly obtained a coordinate reader instead of a full coordinate manager because v[0]=1
v[1]=2
v[2]=3
If there are more vectors to access the same coordinate of, it's better to use unbound managers (see below). Handling a coordinate for any vector objectUnbound coordinate managers (and readers) can't operate directly on vectors but they need to be bound to one. Binding produces a new bound manager, leaving the unbound manager untouched. Binding is done with geo::Point_t A { 1.0, 2.0, 3.0 };
should produce an output like (1,2,3) has y=2
In the example, for (unsigned c = 0; c < 3; ++c) {
auto coordMan = geo::vect::coordManager(c);
auto Bc = geo::vect::bindCoord(B, coordMan);
std::cout << (Bc() - Ac() * 2.0) << std::endl;
} // for
which will emit 3
3
3
This is marginally faster than the same code with for (auto coordMan: geo::vect::coordManagers<geo::Point_t const>()) {
auto Bc = geo::vect::bindCoord(B, coordMan);
std::cout << (Bc() - Ac() * 2.0) << std::endl;
} // for
Conversion between vector typesA convenience function Vector requirementsSo far, the requirements for this set of utilities are the following. The vector type must support:
| |
| template<typename Vector > | |
| constexpr unsigned int | dimension () |
| Returns the dimension of the specified vector type. More... | |
| template<typename Vector > | |
| constexpr unsigned int | dimension (Vector &&) |
| template<typename Vector > | |
| constexpr std::array < std::size_t, geo::vect::dimension< Vector >)> | indices () |
| Returns a sequence of indices valid for a vector of the specified type. More... | |
| template<typename Vector > | |
| constexpr auto | indices (Vector const &) -> decltype(indices< Vector >()) |
| template<typename Vector > | |
| constexpr auto | coordManagers () |
| Returns an array with all coordinate managers for a type of vector. More... | |
| template<typename Vector > | |
| constexpr auto | coordManagers (Vector &&) |
| template<typename Vector > | |
| constexpr auto | coordReaders () |
| Returns an array with all coordinate readers for a type of vector. More... | |
| template<typename Vector > | |
| constexpr auto | coordReaders (Vector &&) |
Functions for common vector operations. | |
This group of template functions are meant to be used with vectors in a generic way. The default implementation is for In addition, two "standard" representations for vectors and points are provided.
| |
| template<typename Vector , typename Scalar > | |
| Vector | rounded0 (Vector const &v, Scalar tol) |
| Returns a vector with all components rounded if close to 0. More... | |
| template<typename Vector , typename Scalar > | |
| void | round0 (Vector &v, Scalar tol) |
| Returns a vector with all components rounded if close to 0. More... | |
| template<typename Vector , typename Scalar > | |
| Vector | rounded01 (Vector const &v, Scalar tol) |
| Returns a vector with all components rounded if close to 0, -1 or +1. More... | |
| template<typename Vector , typename Scalar > | |
| void | round01 (Vector &v, Scalar tol) |
| Returns a vector with all components rounded if close to 0, -1 or +1. More... | |
| template<typename Vector > | |
| bool | isfinite (Vector const &v) |
| Returns whether all components of the vector are finite. More... | |
| template<typename Vector > | |
| Vector | normalize (Vector const &v) |
| Returns a vector parallel to v and with norm 1. More... | |
| template<typename Vector > | |
| Vector | cross (Vector const &a, Vector const &b) |
| Return cross product of two vectors. More... | |
| template<typename Vector > | |
| constexpr auto | dot (Vector const &a, Vector const &b) |
| Return cross product of two vectors. More... | |
| template<typename Vector > | |
| auto | mag2 (Vector const &v) |
| Return norm of the specified vector. More... | |
| template<typename Vector > | |
| auto | norm (Vector const &v) |
| Return norm of the specified vector. More... | |
| template<typename Vector > | |
| auto | mixedProduct (Vector const &a, Vector const &b, Vector const &c) |
Middle point functions | |
| template<typename Point , typename BeginIter , typename EndIter > | |
| Point | middlePointAs (BeginIter begin, EndIter end) |
| Returns the middle of the specified points. More... | |
| template<typename BeginIter , typename EndIter > | |
| geo::Point_t | middlePoint (BeginIter begin, EndIter end) |
| Returns the middle of the specified points. More... | |
| template<typename Point > | |
| Point | middlePoint (std::initializer_list< Point > points) |
| Returns the middle of the specified points. More... | |
Support for LArSoft geometry vectors | |
| template<typename Point > | |
| ::geo::Point_t | toPoint (Point const &p) |
Convert the specified point into a geo::Point_t. More... | |
| template<typename Vector > | |
| ::geo::Vector_t | toVector (Vector const &v) |
Convert the specified vector into a geo::Vector_t. More... | |
| template<typename Point > | |
| std::vector< geo::Point_t > | convertCollToPoint (std::vector< Point > const &coll) |
| template<typename Vector > | |
| std::vector< geo::Vector_t > | convertCollToVector (std::vector< Vector > const &coll) |
| template<typename Coords > | |
| GENVECTOR_CONSTEXPR::geo::Point_t | makePointFromCoords (Coords &&coords) |
Creates a geo::Point_t from its coordinates (see makeFromCoords()). More... | |
| template<typename Coords > | |
| GENVECTOR_CONSTEXPR::geo::Vector_t | makeVectorFromCoords (Coords &&coords) |
Creates a geo::Vector_t from its coordinates (see makeFromCoords()). More... | |
TVector3 conversions | |
| template<typename Vector > | |
| TVector3 | toTVector3 (Vector const &v) |
Converts a vector into a TVector3. More... | |
Variables | |
| template<typename Vector > | |
| static constexpr auto | XcoordManager = details::makeCoordManager(&Vector::X, &Vector::SetX) |
| Object that can be bound to a vector to manage its X coordinate. More... | |
| template<typename Vector > | |
| static constexpr auto | XcoordManager< Vector const > = details::makeCoordReader(&Vector::X) |
| Object that can be bound to a vector to access its X coordinate. More... | |
| template<typename Vector > | |
| static constexpr auto const | YcoordManager = details::makeCoordManager(&Vector::Y, &Vector::SetY) |
| template<typename Vector > | |
| static constexpr auto | YcoordManager< Vector const > = details::makeCoordReader(&Vector::Y) |
| template<typename Vector > | |
| static constexpr auto | ZcoordManager = details::makeCoordManager(&Vector::Z, &Vector::SetZ) |
| template<typename Vector > | |
| static constexpr auto | ZcoordManager< Vector const > = details::makeCoordReader(&Vector::Z) |
| template<typename Vector > | |
| static constexpr auto | TcoordManager = details::makeCoordManager(&Vector::T, &Vector::SetT) |
| template<typename Vector > | |
| static constexpr auto | TcoordManager< Vector const > = details::makeCoordReader(&Vector::T) |
Utilities to manipulate geometry vectors.
The utilities include generic vector interface facilities allowing to use different vector types via templates.
| using geo::vect::coordinate_t = typedef details::VectorScalar_t<Vector> |
Type of coordinate of the specified vector type.
Definition at line 597 of file geo_vectors_utils.h.
| using geo::vect::CoordManager_t = typedef decltype (details::makeCoordManager(&Vector::X, &Vector::SetX)) |
Type of a coordinate manager for a vector type.
Definition at line 648 of file geo_vectors_utils.h.
| using geo::vect::CoordReader_t = typedef decltype(details::makeCoordReader(&Vector::X)) |
Type of a coordinate reader for a vector type.
Definition at line 643 of file geo_vectors_utils.h.
| using geo::vect::MiddlePointAccumulator = typedef MiddlePointAccumulatorDim<3U> |
Middle-point accumulator for vectors of dimension 3.
Definition at line 1384 of file geo_vectors_utils.h.
| constexpr auto geo::vect::bindCoord | ( | Vector const & | v, |
| CoordReader_t< Vector > | helper | ||
| ) |
Binds the specified constant vector to the coordinate reader.
Definition at line 814 of file geo_vectors_utils.h.
| auto geo::vect::bindCoord | ( | Vector & | v, |
| CoordManager_t< Vector > | helper | ||
| ) | -> details::BoundCoordManager<CoordManager_t<Vector>, Vector> |
Binds the specified vector to the coordinate manager.
Definition at line 822 of file geo_vectors_utils.h.
| constexpr auto geo::vect::bindCoordManagers | ( | Vector & | v | ) |
Returns an array with all coordinate managers bound to the specified vector.
Definition at line 2091 of file geo_vectors_utils.h.
| constexpr auto geo::vect::bindCoordReaders | ( | Vector const & | v | ) |
Returns an array with all coordinate readers bound to the specified vector.
Definition at line 2097 of file geo_vectors_utils.h.
| std::vector< Dest > geo::vect::convertCollTo | ( | std::vector< Source > const & | coll | ) |
Returns a vector of type Dest with the same content as a Src.
| Dest | target vector type |
| Source | type of the vector to be converted from |
| coll | the collection of vectors to be converted from |
coll, but of type Dest convertTo()This version applies convertTo() to all the elements of the specified collection, returning a collection of the same template type (std::vector).
For the requirements, see convertTo().
Definition at line 2112 of file geo_vectors_utils.h.
| std::vector<geo::Point_t> geo::vect::convertCollToPoint | ( | std::vector< Point > const & | coll | ) |
Convert the specified collection of points into a collection of geo::Point_t.
Definition at line 1498 of file geo_vectors_utils.h.
| std::vector<geo::Vector_t> geo::vect::convertCollToVector | ( | std::vector< Vector > const & | coll | ) |
Convert the specified collection of vectors into a collection of geo::Vector_t.
Definition at line 1505 of file geo_vectors_utils.h.
| Dest geo::vect::convertTo | ( | Source const & | v | ) |
Returns a vector of type Dest with the same content as a Src.
| Dest | target vector type |
| Source | type of the vector to be converted from |
| v | the vector to be converted from |
v, but of type DestFor this to work, both Src and Dest types must satisfy the requirements of Xcoord(), Ycoord(), Zcoord() etc.
Definition at line 2106 of file geo_vectors_utils.h.
|
noexcept |
Returns an object to manage the coordinate n of a vector.
| Vector | the type of vector to be managed |
| v | the vector to be managed |
| n | the coordinate index: 0 for X, 1 for Y and 2 for Z |
n of a vector Result is undefined for any value of n other than 0, 1 and 2. See Xcoord(), Ycoord() and Zcoord() for Vector type requirements.
Definition at line 2049 of file geo_vectors_utils.h.
| constexpr auto geo::vect::coordManager | ( | unsigned int | n | ) |
Returns an object that can be bound to a vector to manage one of its coordinates.
| Vector | type of vector to get a manager for (constantness matters) |
| n | index of the coordinate (0: X, 1: Y, 2: Z, 3: T) |
Index n is assumed to be smaller than the dimension of the vector. The manager returned for a mutable vector exposes a read/write interface. Example of usage:
will print something like:
For a constant vector, the returned manager exposes a read-only interface. Example of usage:
will print something like:
Note that the use in these examples, coord() is preferred.
Definition at line 2043 of file geo_vectors_utils.h.
| constexpr auto geo::vect::coordManager | ( | unsigned int | n, |
| Vector & | v | ||
| ) |
Returns an object that can be bound to a vector to manage one of its coordinates.
| Vector | type of vector to get a manager for (constantness matters) |
| n | index of the coordinate (0: X, 1: Y, 2: Z, 3: T) |
| v | a vector of type Vector (ignored) |
An alias of geo::vect::coordManager(unsigned int).
| constexpr auto geo::vect::coordManagers | ( | ) |
Returns an array with all coordinate managers for a type of vector.
Definition at line 2066 of file geo_vectors_utils.h.
| constexpr auto geo::vect::coordManagers | ( | Vector && | ) |
Definition at line 2073 of file geo_vectors_utils.h.
| constexpr auto geo::vect::coordReaders | ( | ) |
Returns an array with all coordinate readers for a type of vector.
Definition at line 2078 of file geo_vectors_utils.h.
| constexpr auto geo::vect::coordReaders | ( | Vector && | ) |
Definition at line 2085 of file geo_vectors_utils.h.
| Vector geo::vect::cross | ( | Vector const & | a, |
| Vector const & | b | ||
| ) |
| constexpr unsigned int geo::vect::dimension | ( | ) |
Returns the dimension of the specified vector type.
Definition at line 582 of file geo_vectors_utils.h.
| constexpr unsigned int geo::vect::dimension | ( | Vector && | ) |
Definition at line 584 of file geo_vectors_utils.h.
| constexpr auto geo::vect::dot | ( | Vector const & | a, |
| Vector const & | b | ||
| ) |
| unsigned int geo::vect::fillCoords | ( | Coords & | dest, |
| Vector const & | src | ||
| ) |
Fills a coordinate array with the coordinates of a vector.
| Vector | type of vector being copied from |
| Coords | type of coordinate array to be filled |
| src | the vector to read the coordinates from |
| dest | the array to be filled |
Vector's dimension) geo::vect::makeFromCoords()The Coords array type is expected to provide a indexing operator returning a r-value, that is coords[i] can be assigned to.
Definition at line 2056 of file geo_vectors_utils.h.
| constexpr std::array< std::size_t, geo::vect::dimension< Vector >)> geo::vect::indices | ( | ) |
Returns a sequence of indices valid for a vector of the specified type.
Definition at line 2022 of file geo_vectors_utils.h.
| constexpr auto geo::vect::indices | ( | Vector const & | ) | -> decltype(indices<Vector>()) |
Definition at line 2028 of file geo_vectors_utils.h.
| bool geo::vect::isfinite | ( | Vector const & | v | ) |
Returns whether all components of the vector are finite.
Definition at line 2135 of file geo_vectors_utils.h.
| auto geo::vect::iterateCoords | ( | Vector const & | v | ) |
Returns an object for ranged-for iteration on coordinates.
| Vector | type of vector to iterate through |
| v | vector whose coordinates will be iterated |
Example:
will print 3 4 5.
Definition at line 1068 of file geo_vectors_utils.h.
| auto geo::vect::mag2 | ( | Vector const & | v | ) |
Return norm of the specified vector.
Definition at line 1198 of file geo_vectors_utils.h.
|
inline |
Definition at line 113 of file geo_vectors_utils_TVector.h.
| constexpr Vector geo::vect::makeFromCoords | ( | Coords && | coords | ) |
Creates a Vector object with coordinates from coords.
| Vector | the type of vector to be created |
| Coords | type of object holding the value of the needed coordinates |
| coords | object holding the value of the needed coordinates |
Vector object with coordinates from coords geo::vect::fillCoords()To create a vector of dimension N, the first N values are extracted from coords using Coords::operator[](std::size_t). For example:
will set p as constexpr geo::Point_t {2.0, 5.0, 7.0 }, ignoring the additional data. Likewise, it will set v to geo::Vector_t{ 5.0, 7.0, 11.0 }. In both cases, the coordinates are implicitly converted from float into the scalar type of the target vectors (in both cases, double).
Definition at line 2034 of file geo_vectors_utils.h.
| GENVECTOR_CONSTEXPR ::geo::Point_t geo::vect::makePointFromCoords | ( | Coords && | coords | ) |
Creates a geo::Point_t from its coordinates (see makeFromCoords()).
Definition at line 1511 of file geo_vectors_utils.h.
| GENVECTOR_CONSTEXPR ::geo::Vector_t geo::vect::makeVectorFromCoords | ( | Coords && | coords | ) |
Creates a geo::Vector_t from its coordinates (see makeFromCoords()).
Definition at line 1516 of file geo_vectors_utils.h.
| geo::Point_t geo::vect::middlePoint | ( | BeginIter | begin, |
| EndIter | end | ||
| ) |
Returns the middle of the specified points.
| BeginIter | type of iterator to a point type compatible with add() |
| EndIter | type of end iterator |
| begin | iterator to the first point to be averaged |
| end | iterator after the last point to be averaged |
Point_t with the value of the middle pointExample of usage:
The variable mp of the example will be of type geo::Point_t.
Definition at line 1444 of file geo_vectors_utils.h.
| Point geo::vect::middlePoint | ( | std::initializer_list< Point > | points | ) |
Returns the middle of the specified points.
| Point | cartesian-represented point type with 3-component constructor and X(), Y() and Z() accessors. |
| points | the list of points to be included |
Example of usage:
The variable mp will contain the middle point between the two specified in the initializer list.
Definition at line 1464 of file geo_vectors_utils.h.
| Point geo::vect::middlePointAs | ( | BeginIter | begin, |
| EndIter | end | ||
| ) |
Returns the middle of the specified points.
| Point | cartesian-represented point type with 3-component constructor |
| BeginIter | type of iterator to a point type compatible with add() |
| EndIter | type of end iterator |
| begin | iterator to the first point to be averaged |
| end | iterator after the last point to be averaged |
Point with the value of the middle pointExample of usage:
The variable mp of the example will be of type geo::Vector_t (converted component by components from a geo::Point_t).
Definition at line 1415 of file geo_vectors_utils.h.
| auto geo::vect::mixedProduct | ( | Vector const & | a, |
| Vector const & | b, | ||
| Vector const & | c | ||
| ) |
Return "mixed" product of three vectors:
Definition at line 1207 of file geo_vectors_utils.h.
| auto geo::vect::norm | ( | Vector const & | v | ) |
Return norm of the specified vector.
Definition at line 1202 of file geo_vectors_utils.h.
|
inline |
Definition at line 1646 of file geo_vectors_utils.h.
| Vector geo::vect::normalize | ( | Vector const & | v | ) |
Returns a vector parallel to v and with norm 1.
Definition at line 1186 of file geo_vectors_utils.h.
| CoordConstIterator<Vector> geo::vect::operator+ | ( | typename CoordConstIterator< Vector >::difference_type | n, |
| CoordConstIterator< Vector > const & | v | ||
| ) |
Definition at line 1038 of file geo_vectors_utils.h.
| void geo::vect::round0 | ( | Vector & | v, |
| Scalar | tol | ||
| ) |
Returns a vector with all components rounded if close to 0.
Definition at line 1165 of file geo_vectors_utils.h.
| void geo::vect::round01 | ( | Vector & | v, |
| Scalar | tol | ||
| ) |
Returns a vector with all components rounded if close to 0, -1 or +1.
Definition at line 1177 of file geo_vectors_utils.h.
| Vector geo::vect::rounded0 | ( | Vector const & | v, |
| Scalar | tol | ||
| ) |
Returns a vector with all components rounded if close to 0.
Definition at line 1157 of file geo_vectors_utils.h.
| Vector geo::vect::rounded01 | ( | Vector const & | v, |
| Scalar | tol | ||
| ) |
Returns a vector with all components rounded if close to 0, -1 or +1.
Definition at line 1169 of file geo_vectors_utils.h.
| auto geo::vect::Tcoord | ( | Vector & | v | ) |
Returns an object to manage the coordinate T of the vector v.
| Vector | the type of vector to be managed |
| v | the vector with the coordinate T to be managed |
vThe type Vector needs to have a double T() const method and a auto SetT(auto) method, where the argument is the type of the managed coordinate and the return value is unspecified.
Definition at line 881 of file geo_vectors_utils.h.
| ::geo::Point_t geo::vect::toPoint | ( | Point const & | p | ) |
Convert the specified point into a geo::Point_t.
Definition at line 1485 of file geo_vectors_utils.h.
| TVector3 geo::vect::toTVector3 | ( | Vector const & | v | ) |
Converts a vector into a TVector3.
Definition at line 43 of file geo_vectors_utils_TVector.h.
| ::geo::Vector_t geo::vect::toVector | ( | Vector const & | v | ) |
Convert the specified vector into a geo::Vector_t.
Definition at line 1490 of file geo_vectors_utils.h.
| Vector geo::vect::transformCoords | ( | Vector const & | v, |
| Pred && | pred | ||
| ) |
Returns a new vector applying a predicate to each component.
| Vector | type of the vector in input (and output) |
| Pred | type of unary predicate to be applied |
| v | the vector to be transformed |
| pred | the predicate to be applied |
{ pred(x), pred(y), ... }The predicate is a "functor" type, taking as the single argument the coordinate to be transformed, and returning the transformed value of it.
Definition at line 2125 of file geo_vectors_utils.h.
| auto geo::vect::vector_cbegin | ( | Vector const & | v | ) |
Returns a const-iterator pointing to the first coordinate of v.
Definition at line 1046 of file geo_vectors_utils.h.
| auto geo::vect::vector_cend | ( | Vector const & | v | ) |
Returns a const-iterator pointing after the last coordinate of v.
Definition at line 1051 of file geo_vectors_utils.h.
| auto geo::vect::Xcoord | ( | Vector & | v | ) |
Returns an object to manage the coordinate X of the vector v.
| Vector | the type of vector to be managed |
| v | the vector with the coordinate X to be managed |
vThe type Vector needs to have a double X() const method and a auto SetX(auto) method, where the argument is the type of the managed coordinate and the return value is unspecified.
Definition at line 839 of file geo_vectors_utils.h.
| auto geo::vect::Ycoord | ( | Vector & | v | ) |
Returns an object to manage the coordinate Y of the vector v.
| Vector | the type of vector to be managed |
| v | the vector with the coordinate Y to be managed |
vThe type Vector needs to have a double Y() const method and a auto SetY(auto) method, where the argument is the type of the managed coordinate and the return value is unspecified.
Definition at line 853 of file geo_vectors_utils.h.
| auto geo::vect::Zcoord | ( | Vector & | v | ) |
Returns an object to manage the coordinate Z of the vector v.
| Vector | the type of vector to be managed |
| v | the vector with the coordinate Z to be managed |
vThe type Vector needs to have a double Z() const method and a auto SetZ(auto) method, where the argument is the type of the managed coordinate and the return value is unspecified.
Definition at line 867 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its T coordinate.
geo::vect::XcoordManager Definition at line 728 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its T coordinate.
geo::vect::XcoordManager Definition at line 734 of file geo_vectors_utils.h.
|
static |
Object that can be bound to a vector to manage its X coordinate.
| Vector | type of vector to get a manager for (mutable type required) |
The manager exposes a read/write interface. Example of usage:
will print something like:
Note that the use in the example, Xcoord() is preferred.
Definition at line 673 of file geo_vectors_utils.h.
|
static |
Object that can be bound to a vector to access its X coordinate.
| Vector | type of vector to get a manager for (constant type required) |
The manager exposes a read-only interface. Example of usage:
will print something like:
Note that the use in the example, Xcoord() is preferred.
Definition at line 698 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its Y coordinate.
geo::vect::XcoordManager Definition at line 704 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its Y coordinate.
geo::vect::XcoordManager Definition at line 710 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its Z coordinate.
geo::vect::XcoordManager Definition at line 716 of file geo_vectors_utils.h.
|
static |
An object that can be bound to a vector to manage its Z coordinate.
geo::vect::XcoordManager Definition at line 722 of file geo_vectors_utils.h.
1.8.5