Isis 3 Programmer Reference
CameraGroundMap.h
1#ifndef CameraGroundMap_h
2#define CameraGroundMap_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include "Camera.h"
11#include "CameraDistortionMap.h"
12#include "SpicePosition.h"
13#include "SurfacePoint.h"
14
15namespace Isis {
74 public:
75 CameraGroundMap(Camera *parent);
76
78 virtual ~CameraGroundMap() {};
79
80 virtual bool SetFocalPlane(const double ux, const double uy,
81 const double uz);
82
88 WRT_Latitude,
89 WRT_Longitude,
90 WRT_Radius,
91 WRT_MajorAxis,
92 WRT_MinorAxis,
93 WRT_PolarAxis
94 };
95
96 virtual bool SetGround(const Latitude &lat, const Longitude &lon);
97 virtual bool SetGround(const SurfacePoint &surfacePoint);
98 virtual bool GetXY(const SurfacePoint &spoint, double *cudx,
99 double *cudy, bool test=true);
100 virtual bool GetXY(const double lat, const double lon,
101 const double radius, double *cudx, double *cudy);
102 virtual bool GetdXYdPosition(const SpicePosition::PartialType varType,
103 int coefIndex,
104 double *cudx, double *cudy);
105 virtual bool GetdXYdOrientation(const SpiceRotation::PartialType varType,
106 int coefIndex,
107 double *cudx, double *cudy);
108 virtual bool GetdXYdTOrientation(const SpiceRotation::PartialType varType,
109 int coefIndex,
110 double *cudx, double *cudy);
111 virtual bool GetdXYdPoint(std::vector<double> d_pB,
112 double *dx, double *dy);
113 std::vector<double> PointPartial(SurfacePoint spoint, PartialType wrt);
114 std::vector<double> EllipsoidPartial(SurfacePoint spoint, PartialType raxis);
115 std::vector<double> MeanRadiusPartial(SurfacePoint spoint, Distance meanRadius);
116 double DQuotient(std::vector<double> &look, std::vector<double> &dlook,
117 int index);
118
122 inline double FocalPlaneX() const {
123 return p_focalPlaneX;
124 };
125
129 inline double FocalPlaneY() const {
130 return p_focalPlaneY;
131 };
132
133 protected:
137
138 private:
139 void LookCtoFocalPlaneXY();
141 std::vector<double> m_pB;
143 std::vector<double> m_lookJ;
144 };
145};
146#endif
Convert between undistorted focal plane and ground coordinates.
virtual bool SetGround(const Latitude &lat, const Longitude &lon)
Compute undistorted focal plane coordinate from ground position.
PartialType
Radius axes types to use when computing partials.
virtual bool GetXY(const SurfacePoint &spoint, double *cudx, double *cudy, bool test=true)
Compute undistorted focal plane coordinate from ground position using current Spice from SetImage cal...
virtual bool GetdXYdTOrientation(const SpiceRotation::PartialType varType, int coefIndex, double *cudx, double *cudy)
Compute derivative of focal plane coordinate w/r to target body using current state.
CameraGroundMap(Camera *parent)
Constructor.
virtual bool GetdXYdPoint(std::vector< double > d_pB, double *dx, double *dy)
Compute derivative of focal plane coordinate w/r to ground point using current state.
double p_focalPlaneX
Camera's x focal plane coordinate.
std::vector< double > m_lookJ
Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.
double DQuotient(std::vector< double > &look, std::vector< double > &dlook, int index)
Convenience method for quotient rule applied to look vector.
virtual bool SetFocalPlane(const double ux, const double uy, const double uz)
Compute ground position from focal plane coordinate.
virtual bool GetdXYdPosition(const SpicePosition::PartialType varType, int coefIndex, double *cudx, double *cudy)
Compute derivative w/r to position of focal plane coordinate from ground position using current Spice...
virtual ~CameraGroundMap()
Destructor.
virtual bool GetdXYdOrientation(const SpiceRotation::PartialType varType, int coefIndex, double *cudx, double *cudy)
Compute derivative of focal plane coordinate w/r to instrument using current state from SetImage call...
std::vector< double > EllipsoidPartial(SurfacePoint spoint, PartialType raxis)
Compute derivative of focal plane coordinate w/r to one of the ellipsoidal radii (a,...
Camera * p_camera
Camera.
std::vector< double > PointPartial(SurfacePoint spoint, PartialType wrt)
Compute derivative with respect to indicated variable of conversion function from lat/lon/rad to rect...
std::vector< double > m_pB
Surface point calculated from ground coordinates in GetXY and used for partials.
double FocalPlaneX() const
void LookCtoFocalPlaneXY()
Calculate focalplane x/y from lookvector in camera.
double FocalPlaneY() const
double p_focalPlaneY
Camera's y focal plane coordinate.
std::vector< double > MeanRadiusPartial(SurfacePoint spoint, Distance meanRadius)
Compute derivative of focal plane coordinate w/r to mean of the ellipsoidal radii (a,...
Distance measurement, usually in meters.
Definition Distance.h:34
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
PartialType
This enumeration indicates whether the partial derivative is taken with respect to Right Ascension,...
This class defines a body-fixed surface point.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16