Isis 3 Programmer Reference
CameraGroundMap.h
1#ifndef CameraGroundMap_h
2#define CameraGroundMap_h
3
9/* SPDX-License-Identifier: CC0-1.0 */
10
11#include "Camera.h"
12#include "CameraDistortionMap.h"
13#include "SpicePosition.h"
14#include "SurfacePoint.h"
15
16namespace Isis {
78 public:
79 CameraGroundMap(Camera *parent);
80
82 virtual ~CameraGroundMap() {};
83
84 virtual bool SetFocalPlane(const double ux, const double uy,
85 const double uz);
86
92 WRT_Latitude,
93 WRT_Longitude,
94 WRT_Radius,
95 WRT_MajorAxis,
96 WRT_MinorAxis,
97 WRT_PolarAxis
98 };
99
100 virtual bool SetGround(const Latitude &lat, const Longitude &lon);
101 virtual bool SetGround(const SurfacePoint &surfacePoint);
102 virtual bool GetXY(const SurfacePoint &spoint, double *cudx,
103 double *cudy, bool test=true);
104 virtual bool GetXY(const double lat, const double lon,
105 const double radius, double *cudx, double *cudy);
106 virtual bool GetdXYdPosition(const SpicePosition::PartialType varType,
107 int coefIndex,
108 double *cudx, double *cudy);
109 virtual bool GetdXYdOrientation(const SpiceRotation::PartialType varType,
110 int coefIndex,
111 double *cudx, double *cudy);
112 virtual bool GetdXYdTOrientation(const SpiceRotation::PartialType varType,
113 int coefIndex,
114 double *cudx, double *cudy);
115 virtual bool GetdXYdPoint(std::vector<double> d_pB,
116 double *dx, double *dy);
117 std::vector<double> PointPartial(SurfacePoint spoint, PartialType wrt);
118 std::vector<double> EllipsoidPartial(SurfacePoint spoint, PartialType raxis);
119 std::vector<double> MeanRadiusPartial(SurfacePoint spoint, Distance meanRadius);
120 double DQuotient(std::vector<double> &look, std::vector<double> &dlook,
121 int index);
122
126 inline double FocalPlaneX() const {
127 return p_focalPlaneX;
128 };
129
133 inline double FocalPlaneY() const {
134 return p_focalPlaneY;
135 };
136
137 protected:
141
142 void LookCtoFocalPlaneXY();
144 std::vector<double> m_pB;
146 std::vector<double> m_lookJ;
147 };
148};
149#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