OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDpt.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: David Burken
6 //
7 // Description:
8 //
9 // Contains class declaration for ossimDpt.
10 // Used to represent an double point containing an x and y data member.
11 //
12 //*******************************************************************
13 // $Id: ossimDpt.h 19793 2011-06-30 13:26:56Z gpotts $
14 #ifndef ossimDpt_HEADER
15 #define ossimDpt_HEADER
16 
17 #include <iosfwd>
18 #include <string>
20 #include <ossim/base/ossimCommon.h>
21 #include <ossim/base/ossimString.h>
22 
23 // Forward class declarations.
24 class ossimIpt;
25 class ossimFpt;
26 class ossimDpt3d;
27 class ossimGpt;
28 
30 {
31 public:
32 
33  ossimDpt() : x(0), y(0) {}
34 
35  ossimDpt(double anX, double aY) : x(anX), y(aY) {}
36 
37  // trust the default generated copy-constructor
38  // ossimDpt(const ossimDpt& pt) = default;
39 
40  ossimDpt(const ossimFpt& pt);
41 
42  ossimDpt(const ossimIpt& pt);
43 
44  ossimDpt(const ossimDpt3d &pt);
45 
46  ossimDpt(const ossimGpt &pt); // assigns lat, lon only
47 
48  // trust the default generated copy-constructor
49  // const ossimDpt& operator=(const ossimDpt&) = default;
50 
51  const ossimDpt& operator=(const ossimFpt&);
52 
53  const ossimDpt& operator=(const ossimIpt&);
54 
55  const ossimDpt& operator=(const ossimDpt3d&);
56 
57  const ossimDpt& operator=(const ossimGpt&); // assigns lat, lon only
58 
59  bool operator==(const ossimDpt& pt) const
60  { return ( ossim::almostEqual(x, pt.x) && ossim::almostEqual(y, pt.y) ); }
61 
62  bool operator!=(const ossimDpt& pt) const
63  { return !(*this == pt ); }
64 
65  void makeNan(){x = ossim::nan(); y=ossim::nan();}
66 
67  bool hasNans()const
68  {
69  return (ossim::isnan(x) || ossim::isnan(y));
70  }
71 
72  bool isNan()const
73  {
74  return (ossim::isnan(x) && ossim::isnan(y));
75  }
76 
81  double length() const { return sqrt(x*x + y*y); }
82 
83  //***
84  // OPERATORS: +, -, +=, -=
85  // Point add/subtract with other point:
86  //***
87  ossimDpt operator+(const ossimDpt& p) const
88  { return ossimDpt(x+p.x, y+p.y); }
89  ossimDpt operator-(const ossimDpt& p) const
90  { return ossimDpt(x-p.x, y-p.y); }
91  const ossimDpt& operator+=(const ossimDpt& p)
92  { x += p.x; y += p.y; return *this; }
93  const ossimDpt& operator-=(const ossimDpt& p)
94  { x -= p.x; y -= p.y; return *this; }
95 
96  //***
97  // OPERATORS: *, /
98  // Scale point components by scalar:
99  //***
100  ossimDpt operator*(const double& d) const
101  { return ossimDpt(d*x, d*y); }
102  ossimDpt operator/(const double& d) const
103  { return ossimDpt(x/d, y/d); }
104  const ossimDpt& operator*=(const double& d)
105  { x*=d; y*=d; return *this; }
106 
109  { return (x*pt.x+y*pt.y); }
110 
111  std::ostream& print(std::ostream& os, ossim_uint32 precision=15) const;
112 
114  const ossimDpt& pt);
115 
124  ossimString toString(ossim_uint32 precision=15) const;
125 
137  void toPoint(const std::string& s);
138 
153  ossimDpt& pt);
154  bool isEqualTo(const ossimDpt& rhs, ossimCompareType compareType=OSSIM_COMPARE_FULL)const;
155 
159  double mean() const { return (x + y) / 2.0; }
160 
161  //***
162  // Public data members:
163  //***
164  union {double x; double samp; double u; double lon;};
165  union {double y; double line; double v; double lat;};
166 
167 };
168 
169 
170 #endif /* #ifndef ossimDpt_HEADER */
ossim_uint32 x
ossimDpt operator+(const ossimDpt &p) const
Definition: ossimDpt.h:87
const ossimDpt & operator*=(const double &d)
Definition: ossimDpt.h:104
double mean() const
Returns the average of x and y.
Definition: ossimDpt.h:159
#define OSSIMDLLEXPORT
ossim_uint32 y
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
Definition: ossimCommon.h:53
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
double y
Definition: ossimDpt.h:165
ossimDpt(double anX, double aY)
Definition: ossimDpt.h:35
std::ostream & print(H5::H5File *file, std::ostream &out)
Print method.
Definition: ossimH5Util.cpp:41
ossimCompareType
bool isNan() const
Definition: ossimDpt.h:72
double length() const
Definition: ossimDpt.h:81
bool operator!=(const ossimDpt &pt) const
Definition: ossimDpt.h:62
ossimDpt()
Definition: ossimDpt.h:33
double ossim_float64
const ossimDpt & operator+=(const ossimDpt &p)
Definition: ossimDpt.h:91
ostream & operator<<(ostream &out, const ossimAxes &axes)
Definition: ossimAxes.h:88
unsigned int ossim_uint32
ossimDpt operator/(const double &d) const
Definition: ossimDpt.h:102
ossimDpt operator*(const double &d) const
Definition: ossimDpt.h:100
bool hasNans() const
Definition: ossimDpt.h:67
ossimDpt operator-(const ossimDpt &p) const
Definition: ossimDpt.h:89
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
ossim_float64 operator*(const ossimDpt &pt) const
Dot product.
Definition: ossimDpt.h:108
double x
Definition: ossimDpt.h:164
bool operator==(const ossimDpt &pt) const
Definition: ossimDpt.h:59
const ossimDpt & operator-=(const ossimDpt &p)
Definition: ossimDpt.h:93
OSSIM_DLL void operator>>(ossimIStream &in, ossimOStream &out)
void makeNan()
Definition: ossimDpt.h:65
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91