|
Isis 3.0 Object Programmers' Reference |
Home |
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