USGS

Isis 3.0 Developer's Reference (API)

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 {
00070   class CameraGroundMap {
00071     public:
00072       CameraGroundMap(Camera *parent);
00073 
00075       virtual ~CameraGroundMap() {};
00076 
00077       virtual bool SetFocalPlane(const double ux, const double uy,
00078                                  const double uz);
00079 
00080       enum PartialType {
00081         WRT_Latitude,
00082         WRT_Longitude,
00083         WRT_Radius
00084       };
00085 
00086       virtual bool SetGround(const Latitude &lat, const Longitude &lon);
00087       virtual bool SetGround(const SurfacePoint &surfacePoint);
00088       virtual bool GetXY(const SurfacePoint &spoint, double *cudx, double *cudy);
00089       virtual bool GetXY(const double lat, const double lon,
00090                          const double radius, double *cudx, double *cudy);
00091       virtual bool GetdXYdPosition(const SpicePosition::PartialType varType,
00092                                    int coefIndex,
00093                                    double *cudx, double *cudy);
00094       virtual bool GetdXYdOrientation(const SpiceRotation::PartialType varType,
00095                                       int coefIndex,
00096                                       double *cudx, double *cudy);
00097       virtual bool GetdXYdPoint(std::vector<double> d_lookB,
00098                                 double *cudx, double *cudy);
00099       std::vector<double> PointPartial(SurfacePoint spoint, PartialType wrt);
00100       double DQuotient(std::vector<double> &look, std::vector<double> &dlook,
00101                        int index);
00102 
00104       inline double FocalPlaneX() const {
00105         return p_focalPlaneX;
00106       };
00107 
00109       inline double FocalPlaneY() const {
00110         return p_focalPlaneY;
00111       };
00112 
00113     protected:
00114       Camera *p_camera;
00115       double p_focalPlaneX;
00116       double p_focalPlaneY;
00117 
00118     private:
00119       void LookCtoFocalPlaneXY();  
00120       std::vector<double> p_lookJ;    
00121   };
00122 };
00123 #endif