USGS

Isis 3.0 Object Programmers' Reference

Home

CameraGroundMap.h

Go to the documentation of this file.
00001 
00024 #ifndef CameraGroundMap_h
00025 #define CameraGroundMap_h
00026 
00027 #include "Camera.h"
00028 #include "CameraDistortionMap.h"
00029 #include "SpicePosition.h"
00030 #include "SurfacePoint.h"
00031 
00032 namespace Isis {
00074   class CameraGroundMap {
00075     public:
00076       CameraGroundMap(Camera *parent);
00077 
00079       virtual ~CameraGroundMap() {};
00080 
00081       virtual bool SetFocalPlane(const double ux, const double uy,
00082                                  const double uz);
00083 
00084       enum PartialType {
00085         WRT_Latitude,
00086         WRT_Longitude,
00087         WRT_Radius
00088       };
00089 
00090       virtual bool SetGround(const Latitude &lat, const Longitude &lon);
00091       virtual bool SetGround(const SurfacePoint &surfacePoint);
00092       virtual bool GetXY(const SurfacePoint &spoint, double *cudx, double *cudy);
00093       virtual bool GetXY(const double lat, const double lon,
00094                          const double radius, double *cudx, double *cudy);
00095       virtual bool GetdXYdPosition(const SpicePosition::PartialType varType,
00096                                    int coefIndex,
00097                                    double *cudx, double *cudy);
00098       virtual bool GetdXYdOrientation(const SpiceRotation::PartialType varType,
00099                                       int coefIndex,
00100                                       double *cudx, double *cudy);
00101       virtual bool GetdXYdPoint(std::vector<double> d_lookB,
00102                                 double *cudx, double *cudy);
00103       std::vector<double> PointPartial(SurfacePoint spoint, PartialType wrt);
00104       double DQuotient(std::vector<double> &look, std::vector<double> &dlook,
00105                        int index);
00106 
00108       inline double FocalPlaneX() const {
00109         return p_focalPlaneX;
00110       };
00111 
00113       inline double FocalPlaneY() const {
00114         return p_focalPlaneY;
00115       };
00116 
00117     protected:
00118       Camera *p_camera;
00119       double p_focalPlaneX;
00120       double p_focalPlaneY;
00121 
00122     private:
00123       void LookCtoFocalPlaneXY();  
00124       std::vector<double> p_lookJ;    
00125   };
00126 };
00127 #endif