00001 // This is mul/vpdfl/vpdfl_pc_gaussian_sampler.h 00002 #ifndef vpdfl_pc_gaussian_sampler_h 00003 #define vpdfl_pc_gaussian_sampler_h 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \author Ian Scott 00010 // \date 21-Jul-2000 00011 // \brief Interface for Multi-variate principal Component gaussian PDF sampler. 00012 // 00013 // \verbatim 00014 // Modifications 00015 // 23 April 2001 IMS - Ported to VXL 00016 // \endverbatim 00017 00018 #include "vpdfl_gaussian_sampler.h" 00019 00020 00021 //======================================================================= 00022 00023 class vpdfl_gaussian; 00024 00025 //: Multi-Variate Axis-Aligned principal component Gaussian PDF 00026 class vpdfl_pc_gaussian_sampler : public vpdfl_gaussian_sampler 00027 { 00028 //: workspace; 00029 vnl_vector<double> dx_; 00030 //: workspace; 00031 vnl_vector<double> b_; 00032 public: 00033 00034 //: Calculate the log probability density at position x. 00035 double log_p(const vnl_vector<double>& x); 00036 00037 00038 //: Version number for I/O 00039 short version_no() const; 00040 00041 //: Name of the class 00042 virtual vcl_string is_a() const; 00043 00044 //: Does the name of the class match the argument? 00045 virtual bool is_class(vcl_string const& s) const; 00046 00047 //: Create a copy on the heap and return base class pointer 00048 virtual vpdfl_sampler_base* clone() const; 00049 }; 00050 //======================================================================= 00051 00052 #endif // vpdfl_pc_gaussian_sampler_h