mirror gate 'folds' coordinates into the range. From the infinite number of mirror images resulting from mirroring the input on the bounds, the only one inside the range is picked as the result. When using this gate type with splines with MIRROR boundary conditions, if the shape of the core for the axis in question is M, _lower would be passed 0 and _upper M-1. For splines with REFLECT boundary conditions, we'd pass -0.5 to _lower and M-0.5 to upper, since here we mirror 'between bounds' and the defined range is wider.
More...
|
typedef vspline::unary_functor< rc_type, rc_type, _vsize > | base_type |
|
typedef vector_traits< IN, vsize >::type | in_v |
| vectorized in_type and out_type. vspline::vector_traits supplies these types so that multidimensional/multichannel data come as vigra::TinyVectors, while 'singular' data won't be made into TinyVectors of one element. More...
|
|
typedef vector_traits< OUT, vsize >::type | out_v |
|
enum | |
|
enum | |
|
enum | |
|
typedef rc_type | in_type |
|
typedef rc_type | out_type |
|
typedef vspline::vector_traits< rc_type >::ele_type | in_ele_type |
|
typedef vspline::vector_traits< rc_type >::ele_type | out_ele_type |
|
typedef vigra::TinyVector< in_ele_type, dim_in > | in_nd_ele_type |
|
typedef vigra::TinyVector< out_ele_type, dim_out > | out_nd_ele_type |
|
typedef vector_traits< rc_type, vsize >::ele_v | in_ele_v |
| a simdized type of the elementary type of result_type, which is used for coefficients and results. this is fixed via the traits class vector_traits (in vector.h). Note how we derive this type using vsize from the template argument, not what vspline::vector_traits deems appropriate for ele_type - though both numbers will be the same in most cases. More...
|
|
typedef vector_traits< rc_type, vsize >::ele_v | out_ele_v |
|
typedef vector_traits< rc_type, vsize >::nd_ele_v | in_nd_ele_v |
|
typedef vector_traits< rc_type, vsize >::nd_ele_v | out_nd_ele_v |
|
typedef vector_traits< rc_type, vsize >::type | in_v |
| vectorized in_type and out_type. vspline::vector_traits supplies these types so that multidimensional/multichannel data come as vigra::TinyVectors, while 'singular' data won't be made into TinyVectors of one element. More...
|
|
typedef vector_traits< rc_type, vsize >::type | out_v |
|
typedef vector_traits< int, vsize >::ele_v | ic_v |
| vsize wide vector of ints, used for gather/scatter indexes More...
|
|
template<typename
rc_type, size_t _vsize = vspline::vector_traits < rc_type > :: size>
struct vspline::mirror_gate< rc_type, _vsize >
mirror gate 'folds' coordinates into the range. From the infinite number of mirror images resulting from mirroring the input on the bounds, the only one inside the range is picked as the result. When using this gate type with splines with MIRROR boundary conditions, if the shape of the core for the axis in question is M, _lower would be passed 0 and _upper M-1. For splines with REFLECT boundary conditions, we'd pass -0.5 to _lower and M-0.5 to upper, since here we mirror 'between bounds' and the defined range is wider.
Note how this mode of 'mirroring' allows use of arbitrary coordinates, rather than limiting the range of acceptable input to the first reflection, as some implementations do.
Definition at line 293 of file map.h.