/usr/include/ossim/base/ossimLsrRay.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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | //*****************************************************************************
// FILE: ossimLsrRay.h
//
// Copyright (C) 2001 ImageLinks, Inc.
//
// License: See top level LICENSE.txt file.
//
// DESCRIPTION:
// Class for representing rays in some local space rectangular (LSR)
// coordinate system. This coordinate system is related to the ECEF system
// by the ossimLsrSpace member object. This class simplifies coordinate
// conversions between LSR and ECEF, and other LSR spaces.
//
// An LSR ray is defined as having an LSR origin point and an LSR unit
// direction vector radiating from the origin.
//
// SOFTWARE HISTORY:
//>
// 08Aug2001 Oscar Kramer
// Initial coding.
//<
//*****************************************************************************
// $Id: ossimLsrRay.h 11428 2007-07-27 18:44:18Z gpotts $
#ifndef ossimLsrRay_HEADER
#define ossimLsrRay_HEADER
#include <ossim/base/ossimLsrPoint.h>
#include <ossim/base/ossimLsrVector.h>
#include <ossim/base/ossimEcefRay.h>
#include <ossim/base/ossimNotifyContext.h>
//*****************************************************************************
// CLASS: ossimLsrRay
//
//*****************************************************************************
class OSSIMDLLEXPORT ossimLsrRay
{
public:
/*!
* CONSTRUCTORS:
*/
ossimLsrRay() {}
ossimLsrRay(const ossimLsrRay& copy_this)
: theOrigin(copy_this.theOrigin), theDirection(copy_this.theDirection) {}
ossimLsrRay(const ossimLsrPoint& origin,
const ossimLsrVector& direction);
ossimLsrRay(const ossimLsrPoint& origin,
const ossimLsrPoint& towards);
ossimLsrRay(const ossimLsrRay& convert_this,
const ossimLsrSpace& new_space)
: theOrigin(convert_this.theOrigin, new_space),
theDirection(convert_this.theDirection, new_space) {}
/*!
* OPERATORS:
*/
const ossimLsrRay& operator= (const ossimLsrRay& r); // inline below
bool operator==(const ossimLsrRay& r) const; // inline below
bool operator!=(const ossimLsrRay& r) const; // inline below
/*!
* DATA ACCESS METHODS:
*/
const ossimLsrPoint& origin() const { return theOrigin; }
const ossimLsrVector& direction() const { return theDirection; }
const ossimLsrSpace& lsrSpace() const { return theOrigin.lsrSpace(); }
/*!
* CASTING OPERATOR: ossimEcefRay()
* Looks like a constructor for an ossimEcefRay but is an operation on this
* object. Returns the ossimEcefRay equivalent.
*/
operator ossimEcefRay () const; // inline below
bool hasNans()const
{
return (theOrigin.hasNans()||theDirection.hasNans());
}
void makeNan()
{
theOrigin.makeNan();
theDirection.makeNan();
}
/*!
* METHOD: extend(t)
* Extends the ray by distance t (meters) from the origin to the LSR
* point returned (in same space).
*/
ossimLsrPoint extend(const double& t) const
{
if(!hasNans())
{
return (theOrigin + theDirection*t);
}
ossimLsrPoint p;
p.makeNan();
return p;
}
/*!
* Debug Dump:
*/
void print(ostream& stream = ossimNotify(ossimNotifyLevel_INFO)) const; // inline below
friend ostream& operator<< (ostream& os , const ossimLsrRay& instance)
{ instance.print(os); return os; }
private:
ossimLsrPoint theOrigin;
ossimLsrVector theDirection;
};
//================== BEGIN DEFINITIONS FOR INLINE METHODS =====================
//*****************************************************************************
// INLINE METHOD: ossimEcefRay::operator=(ossimEcefRay)
//*****************************************************************************
inline const ossimLsrRay& ossimLsrRay::operator=(const ossimLsrRay& r)
{
theOrigin = r.theOrigin;
theDirection = r.theDirection;
return *this;
}
//*****************************************************************************
// INLINE METHOD: ossimEcefRay::operator==(ossimEcefRay)
//*****************************************************************************
inline bool ossimLsrRay::operator==(const ossimLsrRay& r) const
{
return ((theOrigin == r.theOrigin) && (theDirection == r.theDirection));
}
//*****************************************************************************
// INLINE METHOD: ossimEcefRay::operator!=(ossimEcefRay)
//*****************************************************************************
inline bool ossimLsrRay::operator!=(const ossimLsrRay& r) const
{
return !(*this == r);
}
//*****************************************************************************
// INLINE CASTING OPERATOR: ossimEcefRay()
//
// Looks like a constructor for an ossimEcefRay but is an operation on this
// object. Returns the ossimEcefRay equivalent.
//*****************************************************************************
inline ossimLsrRay::operator ossimEcefRay() const
{
return ossimEcefRay(ossimEcefPoint(theOrigin),
ossimEcefVector(theDirection));
}
//*****************************************************************************
// INLINE METHOD: ossimLsrRay::print(ostream)
// Dumps contents for debug purposes.
//*****************************************************************************
inline void ossimLsrRay::print(ostream& os) const
{
os << "(ossimLsrRay)"
<< "\n theOrigin = " << theOrigin
<< "\n theDirection = " << theDirection << ends;
}
#endif
|