Isis 3.0 Developer's Reference (API) |
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 { 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