⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_vector_cast.cc

📁 penMesh is a generic and efficient data structure for representing and manipulating polygonal meshes
💻 CC
字号:
// ============================================================================// $Id: test_vector_cast.cc,v 1.1.1.1 2004-09-06 12:37:47 botsch Exp $// ----------------------------------------------------------------------------#include <vector>#include <typeinfo>#include <iostream>#include <iterator>#include <string>#include <exception>#include <OpenMesh/Core/Math/VectorT.hh>#include <OpenMesh/Core/Utils/vector_cast.hh>#include <OpenMesh/Core/Utils/GenProg.hh>#include <OpenMesh/Tools/Utils/TestingFramework.hh>// ----------------------------------------------------------------------------using OpenMesh::Utils::TestingFramework;// ----------------------------------------------------------------------------class MyVector;namespace OpenMesh{  template <>  struct vector_traits<MyVector>  {    typedef MyVector        vector_type;    typedef float           value_type;    static const size_t     size_ = 3;    static size_t size() { return size_; }  };}std::ostream& operator << ( std::ostream& _ostr, const MyVector& _vec );// ----------------------------------------------------------------------------template<typename SrcType, typename DstType >struct test_vector_cast : public TestingFramework::TestFunc{  typedef SrcType                    src_t;  typedef DstType                    dst_t;  typedef TestingFramework::TestFunc Inherited;  typedef test_vector_cast           Self;        src_t   src_;  dst_t   dst_;   test_vector_cast( TestingFramework& _test, const std::string& _n,		     src_t& _src, dst_t& _dst)     : Inherited( _test, _n ),       src_(_src), dst_(_dst)  { }     test_vector_cast( const Self& _cpy ) : TestingFramework::TestFunc(_cpy) { }  ~test_vector_cast() { }  void body(void)  {    using namespace std;    dst_t casted;    casted = OpenMesh::vector_cast<dst_t>(src_);    TH_VERIFY( casted, dst_ );      }};// ----------------------------------------------------------------------------class MyVector{public:  static const size_t _iSize = 3;  MyVector()  {    std::fill(data_, data_+_iSize, 0);  }  MyVector(float a, float b, float c)  {    data_[0] = a;    data_[1] = b;    data_[2] = c;  }  MyVector(const MyVector& _v)  {    *this = _v;  }  MyVector& operator = ( const MyVector& _rhs )  {    std::copy(_rhs.data_, _rhs.data_+_iSize, data_);    return *this;  }  bool operator == ( const MyVector& _rhs ) const  {    return std::equal(_rhs.data_, _rhs.data_+_iSize, data_);  }  float& operator [] (size_t idx) { return data_[idx]; }  const float& operator [] (size_t idx) const { return data_[idx]; }  float data_[_iSize];};std::ostream& operator << ( std::ostream& _ostr, const MyVector& _vec ){  std::copy( _vec.data_, _vec.data_+_vec._iSize,	     std::ostream_iterator<float>(_ostr, " ") );  return _ostr;};// ----------------------------------------------------------------------------int main(void){   using namespace std;      TestingFramework testSuite(std::cout);   {     OpenMesh::Vec3f src( 1, 2, 3);     OpenMesh::Vec3f dst( 1, 2, 3);     new test_vector_cast<       OpenMesh::Vec3f,       OpenMesh::Vec3f>( testSuite, 			 "OpenMesh::Vec3f <- OpenMesh::Vec3f", 			 src, dst );   }     {     OpenMesh::Vec3f src( 1, 2, 3);     MyVector        dst( 1, 2, 3);     new test_vector_cast<       OpenMesh::Vec3f,       MyVector>( testSuite, 		  "MyVector <- OpenMesh::Vec3f", 		  src, dst );   }     {     MyVector        src( 1, 2, 3);     OpenMesh::Vec3f dst( 1, 2, 3);     new test_vector_cast<       MyVector,              OpenMesh::Vec3f>( testSuite, 			 "OpenMesh::Vec3f <- MyVector", 			 src, dst );   }     return testSuite.run();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -