00001 #ifndef vnl_cross_product_matrix_h_ 00002 #define vnl_cross_product_matrix_h_ 00003 // This is vxl/vnl/vnl_cross_product_matrix.h 00004 00005 //: \file 00006 // \brief 3x3 cross-product matrix of vector 00007 // \author Andrew W. Fitzgibbon, Oxford RRG, 19 Sep 96 00008 00009 00010 // Modifications: 00011 // 4/4/01 LSB (Manchester) Tidied Documentation 00012 // 00013 //----------------------------------------------------------------------------- 00014 00015 #include <vnl/vnl_double_3x3.h> 00016 00017 00018 //: Calculates the 3x3 skew symmetric cross product matrix from a vector. 00019 // 00020 // \verbatim 00021 // vnl_cross_product_matrix(e) is the matrix [e]_ x: 00022 // 00023 // 0 -e_3 e_2 00024 // e_3 0 -e_1 00025 // -e_2 e_1 0 00026 // \endverbatim 00027 class vnl_cross_product_matrix : public vnl_double_3x3 { 00028 public: 00029 typedef vnl_double_3x3 base; 00030 00031 vnl_cross_product_matrix(const vnl_vector<double>& v) { set(v.data_block()); } 00032 vnl_cross_product_matrix(const double* v) { set(v); } 00033 vnl_cross_product_matrix(const vnl_cross_product_matrix& that): base(that) {} 00034 ~vnl_cross_product_matrix() {} 00035 00036 vnl_cross_product_matrix& operator=(const vnl_cross_product_matrix& that) { 00037 base::operator= (that); 00038 return *this; 00039 } 00040 00041 void set(const double* v); // override method in vnl_vector 00042 }; 00043 00044 #endif // vnl_cross_product_matrix_h_