OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDpt3d.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: MIT
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: Garrett Potts
8 //
9 // Description:
10 //
11 // Contains class declaration for dpt3d
12 // Used to represent a 3d double point containing an x, y and z data member.
13 //*******************************************************************
14 // $Id: ossimDpt3d.h 22937 2014-11-01 11:30:13Z okramer $
15 
16 #ifndef ossimDpt3d_HEADER
17 #define ossimDpt3d_HEADER
18 
19 #include <cmath>
20 #include <iosfwd>
21 #include <string>
22 
23 #include <ossim/base/ossimCommon.h> /* for ossim::isnan */
25 
26 class ossimIpt;
27 class ossimDpt;
28 
30 {
31 public:
33  const ossimDpt3d &rhs);
34 
35  ossimDpt3d(const double &aX=0, const double &aY=0, const double &aZ=0)
36  :x(aX), y(aY), z(aZ) {}
37 
38  ossimDpt3d(const ossimDpt &aPt);
39  ossimDpt3d(const ossimIpt &aPt);
40 
43  ossimDpt3d(const ossimGpt &gPt);
44 
46  : x(pt[0]), y(pt[1]), z(pt[2]) {}
47 
48  bool operator ==(const ossimDpt3d &rhs) const
49  {
50  return ( (x == rhs.x) &&
51  (y == rhs.y) &&
52  (z == rhs.z));
53  }
54  bool operator !=(const ossimDpt3d &rhs) const
55  {
56  return ( (x != rhs.x) ||
57  (y != rhs.y) ||
58  (z != rhs.z) );
59  }
60 
61  void makeNan(){x = ossim::nan(); y=ossim::nan(); z=ossim::nan();}
62 
63  bool hasNans()const
64  {
65  return (ossim::isnan(x) || ossim::isnan(y) || ossim::isnan(z));
66  }
71  double length() const { return std::sqrt(x*x + y*y + z*z); }
72  double length2() const { return x*x + y*y + z*z; }
73 
74  //***
75  // OPERATORS: +, -, +=, -=
76  // Point add/subtract with other point:
77  //***
79  { return ossimDpt3d(x+p.x, y+p.y, z+p.z); }
81  { return ossimDpt3d(x-p.x, y-p.y, z-p.z); }
82  const ossimDpt3d& operator+=(const ossimDpt3d& p)
83  { x += p.x; y += p.y; z += p.z; return *this; }
84  const ossimDpt3d& operator-=(const ossimDpt3d& p)
85  { x -= p.x; y -= p.y; z -= p.z; return *this; }
86 
87  //***
88  // OPERATORS: *, /
89  // Scale point components by scalar:
90  //***
91  ossimDpt3d operator*(const double& d) const
92  { return ossimDpt3d(d*x, d*y, d*z); }
93  ossimDpt3d operator/(const double& d) const
94  { return ossimDpt3d(x/d, y/d, z/d); }
95  void operator /=(double value)
96  {
97  x /= value;
98  y /= value;
99  z /= value;
100  }
101  void operator *=(double value)
102  {
103  x *= value;
104  y *= value;
105  z *= value;
106  }
107  double operator *(const ossimDpt3d& src)const
108  {
109  return (x*src.x + y*src.y + z*src.z);
110  }
111  inline const ossimDpt3d operator ^ (const ossimDpt3d& rhs) const
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  }
117 
129  std::string toString(ossim_uint32 precision=15) const;
130 
141  void toPoint(const std::string& s);
142 
143  double x;
144  double y;
145  double z;
146 };
147 
148 #endif
ossim_uint32 x
double length2() const
Definition: ossimDpt3d.h:72
#define OSSIMDLLEXPORT
bool operator!=(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:111
ossimDpt3d(const ossimColumnVector3d &pt)
Definition: ossimDpt3d.h:45
ossim_uint32 y
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
ossimDpt3d operator-(const ossimDpt3d &p) const
Definition: ossimDpt3d.h:80
ossimRationalNumber operator*(ossim_int32 i, ossimRationalNumber &r)
bool hasNans() const
Definition: ossimDpt3d.h:63
ostream & operator<<(ostream &out, const ossimAxes &axes)
Definition: ossimAxes.h:88
double z
Definition: ossimDpt3d.h:145
const ossimDpt3d & operator-=(const ossimDpt3d &p)
Definition: ossimDpt3d.h:84
unsigned int ossim_uint32
void makeNan()
Definition: ossimDpt3d.h:61
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:101
double length() const
Definition: ossimDpt3d.h:71
const ossimDpt3d & operator+=(const ossimDpt3d &p)
Definition: ossimDpt3d.h:82
ossimDpt3d operator*(const double &d) const
Definition: ossimDpt3d.h:91
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
ossimDpt3d operator/(const double &d) const
Definition: ossimDpt3d.h:93
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
ossimDpt3d operator+(const ossimDpt3d &p) const
Definition: ossimDpt3d.h:78
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91