zxhproj v 2.2
zxhproj
|
00001 00002 /*========================================================================= 00003 00004 Program: ZXH Registration Software 00005 Author: Xiahai Zhuang 00006 Module: $RCSfle: zxhGradientBase.h $ 00007 Language: C++ 00008 Date: $Date: From 2004-01 $ 00009 Version: $Revision: 1.0, 2.0 $ 00010 00011 =========================================================================*/ 00012 #ifndef ZXHGRADIENTBASE_H 00013 #define ZXHGRADIENTBASE_H 00014 00015 #include "zxhTransformBase.h" 00016 #include "zxhMetricBase.h" 00017 00024 00025 class zxhGradientBase 00026 { 00027 public: 00029 zxhGradientBase(void): 00030 m_fDifferentialStep(0),m_pDifferential(0), fOptimizeDirectionWeight(0) 00031 {}; 00033 virtual ~zxhGradientBase(void); 00034 00036 zxhGradientBase* Clone( zxhGradientBase * & p ) 00037 { 00038 if( p==0 ) return 0 ; 00039 p->m_fDifferentialStep = m_fDifferentialStep ; 00040 p->m_pDifferential = m_pDifferential ; 00041 return p ; 00042 } 00045 virtual void SetDifferentialStep(float f) {m_fDifferentialStep=f;}; 00047 virtual float GetDifferentialStep() {return m_fDifferentialStep;}; 00049 virtual void SetDifferential(zxhTransformBase*p) {m_pDifferential=p;} 00051 virtual zxhTransformBase* GetDifferential() {return m_pDifferential;} 00052 00057 virtual bool ComputeMetricGradient 00058 ( 00059 zxhMetricBase*pMetric, 00060 zxhTransformBase*pInfluence=0 00061 )=0; 00062 00065 ; 00067 virtual bool PrePostComputeMetricGradient( 00068 zxhMetricBase*pMetric, 00069 zxhTransformBase*pInfluence, 00070 bool isPre ) { return false ;} ; 00072 virtual void SetOptimizerDirectionWeight(float f) { fOptimizeDirectionWeight=f;}; 00073 protected: 00074 00076 float m_fDifferentialStep; 00078 zxhTransformBase*m_pDifferential; 00082 float fOptimizeDirectionWeight ; 00083 00084 }; 00085 00086 00087 00088 #endif 00089 00090