56 #ifndef OPENMESH_VECTOR_HH
57 #define OPENMESH_VECTOR_HH
63 #include <OpenMesh/Core/System/config.h>
69 #if defined(__GNUC__) && defined(__SSE__)
70 #include <xmmintrin.h>
93 template <
typename Scalar,
int N>
struct VectorDataT
99 #if defined(__GNUC__) && defined(__SSE__)
102 template <>
struct VectorDataT<float, 4>
120 #define TEMPLATE_HEADER template <typename Scalar, int N>
121 #define CLASSNAME VectorT
122 #define DERIVED VectorDataT<Scalar,N>
123 #define unroll(expr) for (int i=0; i<N; ++i) expr(i)
130 #include "VectorT_inc.hh"
133 #undef TEMPLATE_HEADER
142 #if OM_PARTIAL_SPECIALIZATION
145 #define TEMPLATE_HEADER template <typename Scalar>
146 #define CLASSNAME VectorT<Scalar,DIM>
147 #define DERIVED VectorDataT<Scalar,DIM>
151 #define unroll(expr) expr(0) expr(1)
152 #define unroll_comb(expr, op) expr(0) op expr(1)
153 #define unroll_csv(expr) expr(0), expr(1)
154 #include "VectorT_inc.hh"
162 #define unroll(expr) expr(0) expr(1) expr(2)
163 #define unroll_comb(expr, op) expr(0) op expr(1) op expr(2)
164 #define unroll_csv(expr) expr(0), expr(1), expr(2)
165 #include "VectorT_inc.hh"
173 #define unroll(expr) expr(0) expr(1) expr(2) expr(3)
174 #define unroll_comb(expr, op) expr(0) op expr(1) op expr(2) op expr(3)
175 #define unroll_csv(expr) expr(0), expr(1), expr(2), expr(3)
176 #include "VectorT_inc.hh"
183 #undef TEMPLATE_HEADER
200 values_[2]*_rhs.values_[0]-values_[0]*_rhs.values_[2],
201 values_[0]*_rhs.values_[1]-values_[1]*_rhs.values_[0]);
212 values_[2]*_rhs.values_[0]-values_[0]*_rhs.values_[2],
213 values_[0]*_rhs.values_[1]-values_[1]*_rhs.values_[0]);
225 template<
typename Scalar,
int N>
233 template<
typename Scalar,
int N>
242 template<
typename Scalar,
int N>
344 #endif // OPENMESH_VECTOR_HH defined
Definition: VectorT_inc.hh:63
osg::Vec3f::ValueType dot(const osg::Vec3f &_v1, const osg::Vec3f &_v2)
Adapter for osg vector member computing a scalar product.
Definition: VectorAdapter.hh:174
VectorT< Scalar, 3 > operator%(const VectorT< Scalar, 3 > &_rhs) const
cross product: only defined for Vec3* as specialization
osg::Vec3f cross(const osg::Vec3f &_v1, const osg::Vec3f &_v2)
Adapter for osg vector member computing a scalar product.
Definition: VectorAdapter.hh:189