9#include "LoMediumDistortionMap.h"
14#include "CameraFocalPlaneMap.h"
76 p_camera->FocalPlaneMap()->SetFocalPlane(0., 0.);
77 double boreS =
p_camera->FocalPlaneMap()->DetectorSample();
78 double boreL =
p_camera->FocalPlaneMap()->DetectorLine();
79 QString centkey =
"INS" +
toString(naifIkCode) +
"_POINT_OF_SYMMETRY";
117 if(fabs(dx) > 45.79142767 || fabs(dy) > 35.09)
return false;
119 p_camera->FocalPlaneMap()->SetFocalPlane(dx, dy);
120 double ds =
p_camera->FocalPlaneMap()->DetectorSample();
121 double dl =
p_camera->FocalPlaneMap()->DetectorLine();
130 double origr2 = dists * dists + distl * distl;
131 double sp = sqrt(origr2);
140 double nS = sp / sRef;
141 double dS =
p_odk[0] * nS +
p_odk[1] * pow(nS, 3) +
p_odk[2] * pow(nS, 5);
142 double prevdS = 2 * dS;
143 double pixtol = .000001;
148 while(fabs(dS - prevdS) > pixtol) {
150 if(numit > 14 || fabs(dS) > 1E9) {
165 double ratio = s / sp;
166 double undistortedSample = dists * ratio +
p_sample0;
167 double undistortedLine = distl * ratio +
p_line0;
168 p_camera->FocalPlaneMap()->SetDetector(undistortedSample, undistortedLine);
200 if(fabs(ux) > 45.79142767 || fabs(uy) > 35.09)
return false;
201 if(fabs(ux) > 41.85 || fabs(uy) > 35.09)
return false;
208 double us =
p_camera->FocalPlaneMap()->DetectorSample();
209 double ul =
p_camera->FocalPlaneMap()->DetectorLine();
218 double rp2 = (distus * distus + distul * distul);
227 rp2 = rp2 / sRef / sRef;
228 double drOverR = (
p_odk[0] + rp2 *
p_odk[1] + rp2 * rp2 *
p_odk[2]) / sRef;
231 double ds =
p_sample0 + (distus * (1. + drOverR));
232 double dl =
p_line0 + (distul * (1. + drOverR));
234 p_camera->FocalPlaneMap()->SetDetector(ds, dl);
CameraDistortionMap(Camera *parent, double zDirection=1.0)
Camera distortion map constructor.
double p_focalPlaneX
Distorted focal plane x.
double p_undistortedFocalPlaneX
Undistorted focal plane x.
std::vector< double > p_odk
Vector of distortion coefficients.
virtual void SetDistortion(int naifIkCode)
Load distortion coefficients.
double p_undistortedFocalPlaneY
Undistorted focal plane y.
Camera * p_camera
The camera to distort/undistort.
double p_focalPlaneY
Distorted focal plane y.
virtual bool SetUndistortedFocalPlane(const double ux, const double uy)
Compute distorted focal plane x/y for Lo Medium Resolution Camera.
virtual bool SetFocalPlane(const double dx, const double dy)
Compute undistorted focal plane x/y for Lo Medium Resolution Camera.
void SetDistortion(const int naifIkCode)
Load LO Medium Resolution Camera perspective & distortion coefficients.
double p_line0
Center of distortion on line axis.
double p_sample0
Center of distortion on sample axis.
LoMediumDistortionMap(Camera *parent)
Constructor for LunarOrbiterMediumDistortionMap class.
This is free and unencumbered software released into the public domain.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Namespace for the standard library.