USGS

Isis 3.0 Application Source Code Reference

Home

Stereo.h

Go to the documentation of this file.
00001 #ifndef Stereo_h
00002 #define Stereo_h
00003 
00004 /**
00005  * @file
00006  * $Revision: 1.1 $
00007  * $Date: 2009/09/09 23:42:41 $
00008  *
00009  *   Unless noted otherwise, the portions of Isis written by the USGS are
00010  *   public domain. See individual third-party library and package descriptions
00011  *   for intellectual property information, user agreements, and related
00012  *   information.
00013  *
00014  *   Although Isis has been used by the USGS, no warranty, expressed or
00015  *   implied, is made by the USGS as to the accuracy and functioning of such
00016  *   software and related material nor shall the fact of distribution
00017  *   constitute any such warranty, and no responsibility is assumed by the
00018  *   USGS in connection therewith.
00019  *
00020  *   For additional information, launch
00021  *   $ISISROOT/doc//documents/Disclaimers/Disclaimers.html
00022  *   in a browser or see the Privacy & Disclaimers page on the Isis website,
00023  *   http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on
00024  *   http://www.usgs.gov/privacy.html.
00025  */
00026 
00027 #include "Camera.h"
00028 
00029 namespace Isis {
00030 
00031   /**
00032    * @brief Provide stereo information/data for a point or relationship
00033    *
00034    * @author  2009-09-11 Kris Becker
00035    *
00036    * @internal
00037    */
00038   class Stereo  {
00039     public:
00040 
00041       /**
00042        * @brief Construct a Stereo object
00043        */
00044       Stereo () { }
00045 
00046       /** Destructor for Stereo */
00047       virtual ~Stereo() {}
00048 
00049       static bool Elevation(Camera &cam1, Camera &cam2, double &radius,
00050                             double &latitude, double &longitude,
00051                             double &sepang, double &error);
00052 
00053       static void Spherical(const double latitude, const double longitude,
00054                             const double radius, double &x, double &y,
00055                             double &z);
00056 
00057       static void Rectangular(const double x, const double y, const double z,
00058                               double &latitude, double &longitude,
00059                               double &radius);
00060 
00061   private:
00062     static std::vector<double> Array2StdVec(const double d[3]);
00063     static double *StdVec2Array(const std::vector<double> &v, double *d = 0);
00064     static void TargetToSpacecraft(Camera &camera, double TP[3]);
00065     static void TargetToSurface(Camera &camera, double TC[3]);
00066 
00067   };
00068 };
00069 
00070 #endif