OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Public Attributes | Friends | List of all members
ossimDpt3d Class Reference

#include <ossimDpt3d.h>

Public Member Functions

 ossimDpt3d (const double &aX=0, const double &aY=0, const double &aZ=0)
 
 ossimDpt3d (const ossimDpt &aPt)
 
 ossimDpt3d (const ossimIpt &aPt)
 
 ossimDpt3d (const ossimGpt &gPt)
 Argument gPt is converted to WGS84 datum before coordinates are stored in x, y, z. More...
 
 ossimDpt3d (const ossimColumnVector3d &pt)
 
bool operator== (const ossimDpt3d &rhs) const
 
bool operator!= (const ossimDpt3d &rhs) const
 
void makeNan ()
 
bool hasNans () const
 
double length () const
 
double length2 () const
 
ossimDpt3d operator+ (const ossimDpt3d &p) const
 
ossimDpt3d operator- (const ossimDpt3d &p) const
 
const ossimDpt3doperator+= (const ossimDpt3d &p)
 
const ossimDpt3doperator-= (const ossimDpt3d &p)
 
ossimDpt3d operator* (const double &d) const
 
ossimDpt3d operator/ (const double &d) const
 
void operator/= (double value)
 
void operator*= (double value)
 
double operator* (const ossimDpt3d &src) const
 
const ossimDpt3d operator^ (const ossimDpt3d &rhs) const
 
std::string toString (ossim_uint32 precision=15) const
 To string method. More...
 
void toPoint (const std::string &s)
 Initializes this point from string. More...
 

Public Attributes

double x
 
double y
 
double z
 

Friends

OSSIMDLLEXPORT std::ostream & operator<< (std::ostream &out, const ossimDpt3d &rhs)
 

Detailed Description

Definition at line 29 of file ossimDpt3d.h.

Constructor & Destructor Documentation

◆ ossimDpt3d() [1/5]

ossimDpt3d::ossimDpt3d ( const double &  aX = 0,
const double &  aY = 0,
const double &  aZ = 0 
)
inline

Definition at line 35 of file ossimDpt3d.h.

36  :x(aX), y(aY), z(aZ) {}
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ ossimDpt3d() [2/5]

ossimDpt3d::ossimDpt3d ( const ossimDpt aPt)

Definition at line 18 of file ossimDpt3d.cpp.

References ossimDpt::isNan(), and makeNan().

19  :x(aPt.x),
20  y(aPt.y),
21  z(0)
22 {
23  if(aPt.isNan())
24  {
25  makeNan();
26  }
27 }
double y
Definition: ossimDpt.h:165
bool isNan() const
Definition: ossimDpt.h:72
double z
Definition: ossimDpt3d.h:145
void makeNan()
Definition: ossimDpt3d.h:61
double x
Definition: ossimDpt.h:164
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ ossimDpt3d() [3/5]

ossimDpt3d::ossimDpt3d ( const ossimIpt aPt)

Definition at line 29 of file ossimDpt3d.cpp.

References ossimIpt::isNan(), and makeNan().

30  :x(aPt.x),
31  y(aPt.y),
32  z(0)
33 {
34  if(aPt.isNan())
35  makeNan();
36 }
bool isNan() const
Definition: ossimIpt.h:62
double z
Definition: ossimDpt3d.h:145
void makeNan()
Definition: ossimDpt3d.h:61
ossim_int32 y
Definition: ossimIpt.h:142
double x
Definition: ossimDpt3d.h:143
ossim_int32 x
Definition: ossimIpt.h:141
double y
Definition: ossimDpt3d.h:144

◆ ossimDpt3d() [4/5]

ossimDpt3d::ossimDpt3d ( const ossimGpt gPt)

Argument gPt is converted to WGS84 datum before coordinates are stored in x, y, z.

Likewise, ossimGpt has a constructor that accepts an ossimDpt3d with assumed WGS84 datum.

Definition at line 38 of file ossimDpt3d.cpp.

References ossimGpt::changeDatum(), ossimGpt::hasNans(), ossimGpt::hgt, ossimDatumFactory::instance(), ossimGpt::lat, ossimGpt::lon, makeNan(), x, y, and z.

39 {
40  if(gPt.hasNans())
41  {
42  makeNan();
43  }
44  else
45  {
46  ossimGpt wgs84Pt (gPt);
47  wgs84Pt.changeDatum(ossimDatumFactory::instance()->wgs84());
48  x = wgs84Pt.lon;
49  y = wgs84Pt.lat;
50  z = wgs84Pt.hgt;
51  }
52 }
double z
Definition: ossimDpt3d.h:145
static ossimDatumFactory * instance()
void makeNan()
Definition: ossimDpt3d.h:61
bool hasNans() const
Definition: ossimGpt.h:135
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ ossimDpt3d() [5/5]

ossimDpt3d::ossimDpt3d ( const ossimColumnVector3d pt)
inline

Definition at line 45 of file ossimDpt3d.h.

46  : x(pt[0]), y(pt[1]), z(pt[2]) {}
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

Member Function Documentation

◆ hasNans()

bool ossimDpt3d::hasNans ( ) const
inline

Definition at line 63 of file ossimDpt3d.h.

References ossim::isnan(), x, and y.

Referenced by ossimSonomaSensor::intersectRay(), and ossimIpt::ossimIpt().

64  {
65  return (ossim::isnan(x) || ossim::isnan(y) || ossim::isnan(z));
66  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

◆ length()

double ossimDpt3d::length ( ) const
inline

METHOD: length() Returns the RSS of the components.

Definition at line 71 of file ossimDpt3d.h.

References x, and y.

Referenced by ossimSonomaSensor::lineSampleHeightToWorld(), ossimSonomaSensor::lineSampleToWorld(), and ossim::matrixToHpr().

71 { return std::sqrt(x*x + y*y + z*z); }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ length2()

double ossimDpt3d::length2 ( ) const
inline

Definition at line 72 of file ossimDpt3d.h.

References x, and y.

Referenced by ossim::Quaternion::makeRotate().

72 { return x*x + y*y + z*z; }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ makeNan()

void ossimDpt3d::makeNan ( )
inline

◆ operator!=()

bool ossimDpt3d::operator!= ( const ossimDpt3d rhs) const
inline

Definition at line 54 of file ossimDpt3d.h.

References x, x, y, y, and z.

55  {
56  return ( (x != rhs.x) ||
57  (y != rhs.y) ||
58  (z != rhs.z) );
59  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator*() [1/2]

ossimDpt3d ossimDpt3d::operator* ( const double &  d) const
inline

Definition at line 91 of file ossimDpt3d.h.

References x, and y.

92  { return ossimDpt3d(d*x, d*y, d*z); }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
Definition: ossimDpt3d.h:35
double y
Definition: ossimDpt3d.h:144

◆ operator*() [2/2]

double ossimDpt3d::operator* ( const ossimDpt3d src) const
inline

Definition at line 107 of file ossimDpt3d.h.

References x, x, y, y, and z.

108  {
109  return (x*src.x + y*src.y + z*src.z);
110  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator*=()

void ossimDpt3d::operator*= ( double  value)
inline

Definition at line 101 of file ossimDpt3d.h.

References x, and y.

102  {
103  x *= value;
104  y *= value;
105  z *= value;
106  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator+()

ossimDpt3d ossimDpt3d::operator+ ( const ossimDpt3d p) const
inline

Definition at line 78 of file ossimDpt3d.h.

References x, x, y, y, and z.

79  { return ossimDpt3d(x+p.x, y+p.y, z+p.z); }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
Definition: ossimDpt3d.h:35
double y
Definition: ossimDpt3d.h:144

◆ operator+=()

const ossimDpt3d& ossimDpt3d::operator+= ( const ossimDpt3d p)
inline

Definition at line 82 of file ossimDpt3d.h.

References x, x, y, y, and z.

83  { x += p.x; y += p.y; z += p.z; return *this; }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator-()

ossimDpt3d ossimDpt3d::operator- ( const ossimDpt3d p) const
inline

Definition at line 80 of file ossimDpt3d.h.

References x, x, y, y, and z.

81  { return ossimDpt3d(x-p.x, y-p.y, z-p.z); }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
Definition: ossimDpt3d.h:35
double y
Definition: ossimDpt3d.h:144

◆ operator-=()

const ossimDpt3d& ossimDpt3d::operator-= ( const ossimDpt3d p)
inline

Definition at line 84 of file ossimDpt3d.h.

References x, x, y, y, and z.

85  { x -= p.x; y -= p.y; z -= p.z; return *this; }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator/()

ossimDpt3d ossimDpt3d::operator/ ( const double &  d) const
inline

Definition at line 93 of file ossimDpt3d.h.

References x, and y.

94  { return ossimDpt3d(x/d, y/d, z/d); }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
Definition: ossimDpt3d.h:35
double y
Definition: ossimDpt3d.h:144

◆ operator/=()

void ossimDpt3d::operator/= ( double  value)
inline

Definition at line 95 of file ossimDpt3d.h.

References x, and y.

96  {
97  x /= value;
98  y /= value;
99  z /= value;
100  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator==()

bool ossimDpt3d::operator== ( const ossimDpt3d rhs) const
inline

Definition at line 48 of file ossimDpt3d.h.

References x, x, y, y, and z.

49  {
50  return ( (x == rhs.x) &&
51  (y == rhs.y) &&
52  (z == rhs.z));
53  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144

◆ operator^()

const ossimDpt3d ossimDpt3d::operator^ ( const ossimDpt3d rhs) const
inline

Definition at line 111 of file ossimDpt3d.h.

References x, x, y, y, and z.

112  {
113  return ossimDpt3d(y*rhs.z-z*rhs.y,
114  z*rhs.x-x*rhs.z ,
115  x*rhs.y-y*rhs.x);
116  }
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
Definition: ossimDpt3d.h:35
double y
Definition: ossimDpt3d.h:144

◆ toPoint()

void ossimDpt3d::toPoint ( const std::string &  s)

Initializes this point from string.

Expected format:

( 0.0000000, 0.0000000, 0.00000000 ) --—x-— --—y-— ---—z-—

Parameters
sString to initialize from.

Definition at line 92 of file ossimDpt3d.cpp.

References ossimString::contains(), ossimString::erase(), ossimString::find(), ossim::nan(), ossimString::toFloat64(), x, y, and z.

Referenced by ossimplugins::Ephemeris::loadState().

93 {
94  // Nan out the column vector for starters.
95  x = ossim::nan();
96  y = ossim::nan();
97  z = ossim::nan();
98 
99  std::istringstream is(s);
100 
101  // Check the stream.
102  if (!is) return;
103 
104  //---
105  // Expected input format:
106  // ( 0.0000000, 0.0000000, 0.00000000 )
107  // -----x---- -----y---- -----z----
108  //---
109 
110  const int SZ = 64; // Handle real big number...
111  ossimString os;
112  char buf[SZ];
113  char c = 0;
114 
115  //---
116  // X SECTION:
117  //---
118 
119  // Grab data up to the first comma.
120  is.get(buf, SZ, ',');
121 
122  if (!is) return;
123 
124  // Copy to ossim string.
125  os = buf;
126 
127  // Get rid of the '(' if there is any.
128  std::string::size_type pos = os.find('(');
129  if (pos != std::string::npos)
130  {
131  os.erase(pos, 1);
132  }
133 
134  if (os.contains("nan") == false)
135  {
136  x = os.toFloat64();
137  }
138  else
139  {
140  x = ossim::nan();
141  }
142 
143  // Eat the comma that we stopped at.
144  while (c != ',')
145  {
146  is.get(c);
147  if (!is) break;
148  }
149 
150  //---
151  // Y SECTION:
152  //---
153 
154  // Grab the data up to the next ','
155  is.get(buf, SZ, ',');
156 
157  if (!is) return;
158 
159  // Copy to ossim string.
160  os = buf;
161 
162  if (os.contains("nan") == false)
163  {
164  y = os.toFloat64();
165  }
166  else
167  {
168  y = ossim::nan();
169  }
170 
171  // Eat the comma that we stopped at.
172  c = 0;
173  while (c != ',')
174  {
175  is.get(c);
176  if (!is) break;
177  }
178 
179  //---
180  // Z SECTION:
181  //---
182 
183  // Grab the data up to the ')'
184  is.get(buf, SZ, ')');
185 
186  if (!is) return;
187 
188  // Copy to ossim string.
189  os = buf;
190 
191  if (os.contains("nan") == false)
192  {
193  z = os.toFloat64();
194  }
195  else
196  {
197  z = ossim::nan();
198  }
199 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
bool contains(char aChar) const
Definition: ossimString.h:58
double z
Definition: ossimDpt3d.h:145
std::string::iterator erase(std::string::iterator p)
Erases the character at position p.
Definition: ossimString.h:736
ossim_float64 toFloat64() const
double x
Definition: ossimDpt3d.h:143
std::basic_istringstream< char > istringstream
Class for char input memory streams.
Definition: ossimIosFwd.h:32
double y
Definition: ossimDpt3d.h:144
std::string::size_type find(const std::string &s, std::string::size_type pos=0) const
Searches for s as a substring of *this, beginning at character pos of *this.
Definition: ossimString.h:753

◆ toString()

std::string ossimDpt3d::toString ( ossim_uint32  precision = 15) const

To string method.

Parameters
precisionOutput floating point precision.
Returns
std::string representing point.

Output format: ( 0.0000000, 0.0000000, 0.00000000 ) --—x-— --—y-— ---—z-—

Definition at line 55 of file ossimDpt3d.cpp.

References ossim::isnan(), x, y, and z.

Referenced by operator<<(), and ossimplugins::Ephemeris::saveState().

56 {
58  os << setprecision(precision);
59 
60  os << "(";
61  if ( ossim::isnan(x) == false)
62  {
63  os << x;
64  }
65  else
66  {
67  os << "nan";
68  }
69  os << ",";
70  if ( ossim::isnan(y) == false )
71  {
72  os << y;
73  }
74  else
75  {
76  os << "nan";
77  }
78  os << ",";
79  if ( ossim::isnan(z) == false )
80  {
81  os << z;
82  }
83  else
84  {
85  os << "nan";
86  }
87  os << ")";
88 
89  return os.str();
90 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
double z
Definition: ossimDpt3d.h:145
double x
Definition: ossimDpt3d.h:143
double y
Definition: ossimDpt3d.h:144
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

Friends And Related Function Documentation

◆ operator<<

OSSIMDLLEXPORT std::ostream& operator<< ( std::ostream &  out,
const ossimDpt3d rhs 
)
friend

Definition at line 201 of file ossimDpt3d.cpp.

202 {
203  std::string s = rhs.toString(15);
204  out << s;
205  return out;
206 }
std::string toString(ossim_uint32 precision=15) const
To string method.
Definition: ossimDpt3d.cpp:55

Member Data Documentation

◆ x

double ossimDpt3d::x

◆ y

double ossimDpt3d::y

◆ z

double ossimDpt3d::z

The documentation for this class was generated from the following files: