/usr/include/ossim/projection/ossimPolynomProjection.h is in libossim-dev 2.2.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | //*****************************************************************************
// FILE: ossimPolynomProjection.h
// AUTHOR: Frederic Claudel Meraka/CSIR
//*****************************************************************************
#ifndef ossimPolynomProjection_HEADER
#define ossimPolynomProjection_HEADER
#include <ossim/projection/ossimProjection.h>
#include <ossim/projection/ossimOptimizableProjection.h>
#include <ossim/base/ossimIpt.h>
#include <ossim/base/ossimPolynom.h>
/**
* class for ground to image polynomial projection: (x,y,z)|->(x,y)
* polynom order is configurable
*/
class OSSIM_DLL ossimPolynomProjection : public ossimProjection,
public ossimOptimizableProjection
{
public:
/**
* Constructors
*/
ossimPolynomProjection();
ossimPolynomProjection(const ossimPolynomProjection& copyme);
~ossimPolynomProjection();
/**
* Basic operations
*/
virtual bool operator==(const ossimProjection& projection) const;
virtual bool saveState(ossimKeywordlist& kwl,
const char* prefix=0) const;
virtual bool loadState(const ossimKeywordlist& kwl,
const char* prefix=0);
virtual std::ostream& print(std::ostream& out) const;
virtual ossimObject* dup() const { return new ossimPolynomProjection(*this); }
/**
* Projection / localization methods
*/
virtual void worldToLineSample(const ossimGpt& world_point,
ossimDpt& image_point) const;
virtual void lineSampleToWorld(const ossimDpt& image_point,
ossimGpt& world_point) const;
virtual void lineSampleHeightToWorld(const ossimDpt& image_point,
const double& heightEllipsoid,
ossimGpt& worldPoint) const;
virtual ossimGpt origin()const;
virtual ossimDpt getMetersPerPixel() const;
/**
* optimizableProjection implementation
*/
virtual bool setupOptimizer(const ossimString& setup);
inline virtual bool useForward()const {return true;}
virtual ossim_uint32 degreesOfFreedom()const;
virtual double optimizeFit(const ossimTieGptSet& tieSet, double* targetVariance=NULL);
/**
* accessors (not all of them inline)
*/
const ossimPolynom< ossim_float64 , 3 >::EXPT_SET& getExpSet()const { return theExpSet; }
void setExpSet(const ossimPolynom< ossim_float64 , 3 >::EXPT_SET& nset) { theExpSet = nset; }
void setupDesiredExponents(int horizonal_ord, int vertical_ord); //!added for easy setup
bool setupDesiredExponents(const ossimString& monoms);//!added for easy setup
const ossimPolynom< ossim_float64 , 3 >& getPolyLine()const {return thePolyLine;}
void setPolyLine(const ossimPolynom< ossim_float64 , 3 >& poly);
const ossimPolynom< ossim_float64 , 3 >& getPolySamp()const {return thePolySamp;}
void setPolySamp(const ossimPolynom< ossim_float64 , 3 >& poly);
const ossim_float64& getLonOffset()const { return theLonOffset;}
void setLonOffset(const ossim_float64& v) { theLonOffset = v; }
const ossim_float64& getLonScale()const { return theLonScale;}
void setLonScale(const ossim_float64& v) { theLonScale = v; }
const ossim_float64& getLatOffset()const { return theLatOffset;}
void setLatOffset(const ossim_float64& v) { theLatOffset = v; }
const ossim_float64& getLatScale()const { return theLatScale;}
void setLatScale(const ossim_float64& v) { theLatScale = v; }
const ossim_float64& getHgtOffset()const { return theHgtOffset;}
void setHgtOffset(const ossim_float64& v) { theHgtOffset = v; }
const ossim_float64& getHgtScale()const { return theHgtScale;}
void setHgtScale(const ossim_float64& v) { theHgtScale = v; }
/**
* @brief Implementation of pure virtual
* ossimProjection::isAffectedByElevation method.
* @return true.
*/
virtual bool isAffectedByElevation() const { return true; }
protected:
/**
* desired exponents tuples set (for both line and sample polynoms)
* used for optimization
*/
ossimPolynom< ossim_float64 , 3 >::EXPT_SET theExpSet;
/**
* ground (3d) to image(2D) polynoms
*/
ossimPolynom< ossim_float64 , 3 > thePolyLine;//!xyz polynom
ossimPolynom< ossim_float64 , 3 > thePolySamp;
/**
* polynom partial derivatives
*/
ossimPolynom< ossim_float64 , 3 > thePolyLine_DLon;
ossimPolynom< ossim_float64 , 3 > thePolyLine_DLat;
ossimPolynom< ossim_float64 , 3 > thePolySamp_DLon;
ossimPolynom< ossim_float64 , 3 > thePolySamp_DLat;
/**
* normalization parameters
*/
ossim_float64 theLonOffset;
ossim_float64 theLonScale;
ossim_float64 theLatOffset;
ossim_float64 theLatScale;
ossim_float64 theHgtOffset;
ossim_float64 theHgtScale;
/**
* protected methods
*/
void buildDerivatives();
void buildLineDerivatives();
void buildSampDerivatives();
bool stringToExp(const ossimString& s, ossimPolynom< ossim_float64 , 3 >::EXP_TUPLE& et)const; //!takes string of xyz monoms, x2z3
int getSymbol(ossimString& ts,const ossimString& symbols)const;
int getExponent(ossimString& ts)const;
TYPE_DATA
};
#endif
|