46 #ifndef OPENMESH_KERNEL_OSG_VECTORADAPTER_HH 
   47 #define OPENMESH_KERNEL_OSG_VECTORADAPTER_HH 
   52 #include <osg/Geometry> 
   53 #include <OpenMesh/Core/Utils/vector_cast.hh> 
   63 #define OSG_VECTOR_TRAITS( VecType ) \ 
   64   template <> struct vector_traits< VecType > { \ 
   65     typedef VecType                vector_type; \ 
   66     typedef vector_type::ValueType value_type;  \ 
   67     typedef GenProg::Int2Type< vector_type::_iSize > typed_size; \ 
   69     static const size_t size_ = vector_type::_iSize; \ 
   70     static size_t size() { return size_; } \ 
   74 OSG_VECTOR_TRAITS( osg::Pnt4f );
 
   76 OSG_VECTOR_TRAITS( osg::Pnt3f );
 
   78 OSG_VECTOR_TRAITS( osg::Pnt2f );
 
   81 OSG_VECTOR_TRAITS( osg::Vec4f );
 
   83 OSG_VECTOR_TRAITS( osg::Vec3f );
 
   85 OSG_VECTOR_TRAITS( osg::Vec2f );
 
   88 OSG_VECTOR_TRAITS( osg::Pnt4d );
 
   90 OSG_VECTOR_TRAITS( osg::Pnt3d );
 
   92 OSG_VECTOR_TRAITS( osg::Pnt2d );
 
   95 OSG_VECTOR_TRAITS( osg::Vec4d );
 
   97 OSG_VECTOR_TRAITS( osg::Vec3d );
 
  100 OSG_VECTOR_TRAITS( osg::Vec4ub );
 
  106 #define OSG_COLOR_TRAITS( VecType, N ) \ 
  107   template <> struct vector_traits< VecType > { \ 
  108     typedef VecType                vector_type; \ 
  109     typedef vector_type::ValueType value_type;  \ 
  110     typedef GenProg::Int2Type< N > typed_size; \ 
  112     static const size_t size_ = N; \ 
  113     static size_t size() { return size_; } \ 
  118 OSG_COLOR_TRAITS( osg::Color3ub, 3 );
 
  120 OSG_COLOR_TRAITS( osg::Color4ub, 4 );
 
  122 OSG_COLOR_TRAITS( osg::Color3f,  3 );
 
  124 OSG_COLOR_TRAITS( osg::Color4f,  4 );
 
  126 #undef OSG_VECTOR_TRAITS 
  131 #define PNT2VEC_CASTER( DST, SRC ) \ 
  132   template <> struct vector_caster< DST, SRC > { \ 
  135     typedef const dst_t& return_type; \ 
  136     inline static return_type cast( const src_t& _src ) {\ 
  137       return _src.subZero(); \ 
  142 PNT2VEC_CASTER( osg::Vec3f, osg::Pnt3f );
 
  145 PNT2VEC_CASTER( osg::Vec4f, osg::Pnt4f );
 
  148 PNT2VEC_CASTER( osg::Vec3d, osg::Pnt3d );
 
  151 PNT2VEC_CASTER( osg::Vec4d, osg::Pnt4d );
 
  157   struct vector_caster< osg::
Vec3f, osg::Pnt3f > 
 
  159     typedef osg::Vec3f   dst_t;
 
  160     typedef osg::Pnt3f   src_t;
 
  162     typedef const dst_t& return_type;
 
  163     inline static return_type cast( 
const src_t& _src ) 
 
  165       std::cout << 
"casting Pnt3f to Vec3f\n";
 
  166       return _src.subZero();
 
  176 osg::Vec3f::ValueType 
dot( 
const osg::Vec3f &_v1, 
const osg::Vec3f &_v2 )
 
  177 { 
return _v1.dot(_v2); }
 
  181 osg::Vec3f::ValueType 
dot( 
const osg::Vec3f &_v1, 
const osg::Pnt3f &_v2 )
 
  182 { 
return _v1.dot(_v2); }
 
  186 osg::Vec2f::ValueType 
dot( 
const osg::Vec2f &_v1, 
const osg::Vec2f &_v2 )
 
  187 { 
return _v1.dot(_v2); }
 
  191 osg::Vec3f cross( 
const osg::Vec3f &_v1, 
const osg::Vec3f &_v2 )
 
  192 { 
return _v1.cross(_v2); }
 
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
 
osg::Vec3f::ValueType dot(const osg::Vec3f &_v1, const osg::Vec3f &_v2)
Adapter for osg vector member computing a scalar product.
Definition: VectorAdapter.hh:176