OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimApplanixEcefModel.h
Go to the documentation of this file.
1 //*******************************************************************
2 // Copyright (C) 2005 Garrett Potts
3 //
4 // MIT
5 //
6 // Author: Garrett Potts
7 //
8 //*******************************************************************
9 // $Id: ossimApplanixEcefModel.h 20496 2012-01-25 17:15:43Z gpotts $
10 #ifndef ossimApplanixEcefModel_HEADER
11 #define ossimApplanixEcefModel_HEADER
14 #include <ossim/base/ossimDpt3d.h>
15 
17 {
18 public:
20  ossimApplanixEcefModel(const ossimDrect& imageRect, // center in image space
21  const ossimGpt& platformPosition,
22  double roll,
23  double pitch,
24  double heading,
25  const ossimDpt& principalPoint, // in millimeters
26  double focalLength, // in millimeters
27  const ossimDpt& pixelSize); // in millimeters
29  virtual ossimObject* dup()const;
30 
31  virtual void imagingRay(const ossimDpt& image_point,
32  ossimEcefRay& image_ray) const;
33 
34  void lineSampleToWorld(const ossimDpt& image_point,
35  ossimGpt& gpt) const;
36 
37 
38  virtual void lineSampleHeightToWorld(const ossimDpt& image_point,
39  const double& heightEllipsoid,
40  ossimGpt& worldPoint) const;
41  virtual void worldToLineSample(const ossimGpt& world_point,
42  ossimDpt& image_point) const;
43 
44  virtual void updateModel();
45 
46  void setPrincipalPoint(ossimDpt principalPoint);
47 
48  virtual bool insideImage(const ossimDpt& p) const
49  {
50  /* return( (p.u>=(0.0-FLT_EPSILON)) && */
51  /* (p.u<=(double)(theImageSize.u-(1-FLT_EPSILON))) && */
52  /* (p.v>=(0.0-FLT_EPSILON)) && */
53  /* (p.v<=(double)(theImageSize.v-(1-FLT_EPSILON))) ); */
54  // if it's close to the edge we will consider it inside the image
55  //
56  return theImageClipRect.pointWithin(p, theImageClipRect.width());
57  }
58 
59 
60  void setRollPitchHeading(double roll,
61  double pitch,
62  double heading);
63 
64  void setPixelSize(const ossimDpt& pixelSize);
65  void setImageRect(const ossimDrect& rect);
66  void setFocalLength(double focalLength);
67  void setPlatformPosition(const ossimGpt& gpt);
68 
69  virtual bool saveState(ossimKeywordlist& kwl,
70  const char* prefix=0) const;
71 
72  virtual bool loadState(const ossimKeywordlist& kwl,
73  const char* prefix=0);
74  virtual void initAdjustableParameters();
75 
79 // inline virtual bool useForward()const {return true;} //!ground to image faster (you don't need DEM)
80  inline virtual bool useForward()const {return false;}
81  virtual bool setupOptimizer(const ossimString& init_file);
82 
83 protected:
84 
85  NEWMAT::Matrix theCompositeMatrix;
86  NEWMAT::Matrix theCompositeMatrixInverse;
87  double theRoll;
88  double thePitch;
89  double theHeading;
95 
96 
98 
100 };
101 
102 #endif
ossimRefPtr< ossimMeanRadialLensDistortion > theLensDistortion
virtual ossimObject * dup() const =0
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual bool setupOptimizer(const ossimString &setup)
setupFromString() Derived classes should implement as needed. Initialize parameters needed for optimi...
virtual bool insideImage(const ossimDpt &p) const
Represents serializable keyword/value map.
NEWMAT::Matrix theCompositeMatrixInverse
virtual void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &world_point) const
NEWMAT::Matrix theCompositeMatrix
uses file path to init model
ossimEcefPoint theAdjEcefPlatformPosition
virtual bool useForward() const
#define TYPE_DATA
Definition: ossimRtti.h:339
ossimEcefPoint theEcefPlatformPosition
virtual void lineSampleHeightToWorld(const ossimDpt &lineSampPt, const double &heightEllipsoid, ossimGpt &worldPt) const =0
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
virtual void updateModel()
void setImageRect(const ossimDrect &imageRect)
virtual void worldToLineSample(const ossimGpt &world_point, ossimDpt &image_point) const
#define OSSIM_DLL