/usr/include/ossim/base/ossimLsrSpace.h is in libossim-dev 1.7.21-3ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | //*******************************************************************
//
// License: See top level LICENSE.txt file.
//
// DESCRIPTION:
// This class maintains the relationship between a local space rectangular
// (LSR) coordinate system and the earth-centered, earth-fixed (ECEF) system.
//
// SOFTWARE HISTORY:
//>
// 08Aug2001 Oscar Kramer (okramer@imagelinks.com)
// Initial coding.
//<
//*****************************************************************************
// $Id: ossimLsrSpace.h 12790 2008-05-05 13:41:33Z dburken $
#ifndef ossimLsrSpace_HEADER
#define ossimLsrSpace_HEADER
#include <ossim/base/ossimEcefPoint.h>
// #include <ossim/base/ossimEcefVector.h>
#include <ossim/base/ossimMatrix3x3.h>
#include <ossim/base/ossimNotifyContext.h>
class ossimGpt;
class ossimEcefVector;
//*****************************************************************************
// CLASS: ossimLsrSpace
//
// This class maintains the relationship between a local space rectangular
// (LSR) coordinate system and the earth-centered, earth-fixed (ECEF) system.
//
//*****************************************************************************
class OSSIMDLLEXPORT ossimLsrSpace
{
public:
/*!
* DEFAULT & COPY CONSTRUCTOR:
*/
ossimLsrSpace() {}
ossimLsrSpace(const ossimLsrSpace& copy_this)
:
theLsrToEcefRotMatrix(copy_this.theLsrToEcefRotMatrix),
theOrigin(copy_this.theOrigin) {}
/*!
* CONSTRUCTORS: The following three constructors accept an ECEF origin
* and two of the three axes direction vectors. Note the use of the dummy
* "int" argument (not used) to hold the place of the unspecified axes.
*/
ossimLsrSpace(const ossimEcefPoint& origin,
const ossimEcefVector& x_dir_ecf_vec,
const ossimEcefVector& y_dir_ecf_vec,
const int z_not_provided_space_holder);
ossimLsrSpace(const ossimEcefPoint& origin,
const ossimEcefVector& x_dir_ecf_vec,
const int y_not_provided_space_holder,
const ossimEcefVector& z_dir_ecf_vec);
ossimLsrSpace(const ossimEcefPoint& origin,
const int x_not_provided_space_holder,
const ossimEcefVector& y_dir_ecf_vec,
const ossimEcefVector& z_dir_ecf_vec);
/*!
* CONSTRUCTOR: ossimLsrSpace(ossimGpt, y_azimuth)
* This constructor sets up a local coordinate system centered at the
* specified groundpoint, with the Z-axis normal to the ellipsoid and the
* Y-axis rotated clockwise from north by the y_azimuth. This angle defaults
* to 0, producing an East-North-Up (ENU) system.
*/
ossimLsrSpace(const ossimGpt& origin,
const double& y_azimuth=0);
/*!
* CONSTRUCTOR: ossimLsrSpace(ossimEcefPt, NEWMAT::Matrix)
* This constructor sets up a local coordinate system centered at the
* specified ECF, with given LSR-to-ECF rotation.
*/
ossimLsrSpace(const ossimEcefPoint& origin,
const NEWMAT::Matrix& lsrToEcfRot)
: theLsrToEcefRotMatrix (lsrToEcfRot), theOrigin (origin) {}
~ossimLsrSpace() {}
/*!
* OPERATORS:
*/
bool operator == (const ossimLsrSpace&) const;
bool operator != (const ossimLsrSpace& that) const
{ return !(*this == that); }
const ossimLsrSpace& operator = (const ossimLsrSpace& space);
/*!
* DATA ACCESS METHODS:
*/
const ossimEcefPoint& origin() const { return theOrigin; }
const NEWMAT::Matrix& lsrToEcefRotMatrix() const
{ return theLsrToEcefRotMatrix; }
NEWMAT::Matrix ecefToLsrRotMatrix() const
{ return theLsrToEcefRotMatrix.t(); }
/*!
* METHOD: lsrSpaceErrorMessage()
* Convenience method accessible to all owners of an ossimLsrSpace for
* displaying an error message when LSR spaces do not match between
* objects. All operations between LSR objects must be in a common space.
*/
static ostream& lsrSpaceErrorMessage(ostream& os=ossimNotify(ossimNotifyLevel_INFO));
/*!
* Debug Dump:
*/
void print(ostream& stream = ossimNotify(ossimNotifyLevel_INFO)) const;
friend ostream& operator<< (ostream& os , const ossimLsrSpace& instance)
{ instance.print(os); return os; }
private:
NEWMAT::Matrix theLsrToEcefRotMatrix;
ossimEcefPoint theOrigin;
};
#endif
|