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

#include <ossimColumnVector3d.h>

Public Member Functions

 ossimColumnVector3d ()
 
 ossimColumnVector3d (double x, double y, double z=0)
 
 ossimColumnVector3d (const NEWMAT::ColumnVector &rhs)
 
const ossimColumnVector3doperator= (const NEWMAT::ColumnVector &rhs)
 
double & operator[] (int index)
 
const double & operator[] (int index) const
 
ossimColumnVector3d operator* (double scalar) const
 
ossimColumnVector3d operator+ (const ossimColumnVector3d &rhs) const
 
const ossimColumnVector3doperator+= (const ossimColumnVector3d &rhs)
 
ossimColumnVector3d operator- () const
 
ossimColumnVector3d operator/ (double scalar) const
 
const ossimColumnVector3doperator/= (double scalar)
 
ossimColumnVector3d operator- (const ossimColumnVector3d &rhs) const
 
const ossimColumnVector3doperator-= (const ossimColumnVector3d &rhs)
 
bool operator== (const ossimColumnVector3d &rhs) const
 
bool operator!= (const ossimColumnVector3d &rhs) const
 
double magnitude () const
 
double norm2 () const
 speedup More...
 
double dot (const ossimColumnVector3d &rhs) const
 
ossimColumnVector3d unit () const
 
ossimColumnVector3d cross (const ossimColumnVector3d &rhs) const
 
const ossimColumnVector3dxAligned ()
 
const ossimColumnVector3dyAligned ()
 
const ossimColumnVector3dzAligned ()
 
ossimString toString (ossim_uint32 precision=15) const
 To string method. More...
 
void toPoint (const std::string &s)
 Initializes this point from string. More...
 

Private Attributes

double data [3]
 

Friends

ostream & operator<< (ostream &out, const ossimColumnVector3d &v)
 
ossimColumnVector3d operator* (double scalar, const ossimColumnVector3d &v)
 
ossimColumnVector3d operator* (const NEWMAT::Matrix &lhs, const ossimColumnVector3d &rhs)
 

Detailed Description

Definition at line 25 of file ossimColumnVector3d.h.

Constructor & Destructor Documentation

◆ ossimColumnVector3d() [1/3]

ossimColumnVector3d::ossimColumnVector3d ( )
inline

Definition at line 28 of file ossimColumnVector3d.h.

29  {
30  data[0]=0;
31  data[1]=0;
32  data[2]=0;
33  }

◆ ossimColumnVector3d() [2/3]

ossimColumnVector3d::ossimColumnVector3d ( double  x,
double  y,
double  z = 0 
)
inline

Definition at line 35 of file ossimColumnVector3d.h.

References x, and y.

36  {
37  data[0]=x;
38  data[1]=y;
39  data[2]=z;
40  }
ossim_uint32 x
ossim_uint32 y

◆ ossimColumnVector3d() [3/3]

ossimColumnVector3d::ossimColumnVector3d ( const NEWMAT::ColumnVector &  rhs)
inlineexplicit

Definition at line 45 of file ossimColumnVector3d.h.

46  {
47  if ( (rhs.Ncols() == 1) && (rhs.Nrows() > 2) )
48  {
49  data[0] = rhs[0];
50  data[1] = rhs[1];
51  data[2] = rhs[2];
52  }
53  else
54  {
55  data[0]=0;
56  data[1]=0;
57  data[2]=0;
58  }
59  }

Member Function Documentation

◆ cross()

ossimColumnVector3d ossimColumnVector3d::cross ( const ossimColumnVector3d rhs) const
inline

Definition at line 225 of file ossimColumnVector3d.h.

Referenced by ossimLsrVector::cross(), ossimEcefVector::cross(), ossimplugins::ossimFormosatModel::imagingRay(), and ossimLsrSpace::ossimLsrSpace().

226  {
227  return ossimColumnVector3d( data[1]*rhs[2] - data[2]*rhs[1],
228  data[2]*rhs[0] - data[0]*rhs[2],
229  data[0]*rhs[1] - data[1]*rhs[0]);
230  }

◆ dot()

double ossimColumnVector3d::dot ( const ossimColumnVector3d rhs) const
inline

Definition at line 205 of file ossimColumnVector3d.h.

Referenced by ossimLsrVector::angleTo(), ossimEcefVector::angleTo(), ossimLsrVector::dot(), ossimEcefVector::dot(), and ossimPositionQualityEvaluator::vperp().

206  {
207  return (data[0]*rhs[0]+
208  data[1]*rhs[1]+
209  data[2]*rhs[2]);
210  }

◆ magnitude()

double ossimColumnVector3d::magnitude ( ) const
inline

◆ norm2()

double ossimColumnVector3d::norm2 ( ) const
inline

speedup

Definition at line 199 of file ossimColumnVector3d.h.

Referenced by ossimEcefVector::norm2().

200  {
201  return data[0]*data[0] +
202  data[1]*data[1] +
203  data[2]*data[2];
204  }

◆ operator!=()

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

Definition at line 190 of file ossimColumnVector3d.h.

191  { return !(*this == rhs); }

◆ operator*()

ossimColumnVector3d ossimColumnVector3d::operator* ( double  scalar) const
inline

Definition at line 122 of file ossimColumnVector3d.h.

123  {
124  return ossimColumnVector3d(data[0]*scalar,
125  data[1]*scalar,
126  data[2]*scalar);
127  }

◆ operator+()

ossimColumnVector3d ossimColumnVector3d::operator+ ( const ossimColumnVector3d rhs) const
inline

Definition at line 129 of file ossimColumnVector3d.h.

130  {
131  return ossimColumnVector3d( data[0]+rhs[0],
132  data[1]+rhs[1],
133  data[2]+rhs[2]);
134  }

◆ operator+=()

const ossimColumnVector3d& ossimColumnVector3d::operator+= ( const ossimColumnVector3d rhs)
inline

Definition at line 136 of file ossimColumnVector3d.h.

137  {
138  data[0] += rhs[0];
139  data[1] += rhs[1];
140  data[2] += rhs[2];
141 
142  return *this;
143  }

◆ operator-() [1/2]

ossimColumnVector3d ossimColumnVector3d::operator- ( ) const
inline

Definition at line 145 of file ossimColumnVector3d.h.

146  {
147  return ossimColumnVector3d(-data[0],
148  -data[1],
149  -data[2]);
150  }

◆ operator-() [2/2]

ossimColumnVector3d ossimColumnVector3d::operator- ( const ossimColumnVector3d rhs) const
inline

Definition at line 168 of file ossimColumnVector3d.h.

169  {
170  return ossimColumnVector3d( data[0]-rhs[0],
171  data[1]-rhs[1],
172  data[2]-rhs[2]);
173  }

◆ operator-=()

const ossimColumnVector3d& ossimColumnVector3d::operator-= ( const ossimColumnVector3d rhs)
inline

Definition at line 175 of file ossimColumnVector3d.h.

176  {
177  data[0] -= rhs[0];
178  data[1] -= rhs[1];
179  data[2] -= rhs[2];
180 
181  return *this;
182  }

◆ operator/()

ossimColumnVector3d ossimColumnVector3d::operator/ ( double  scalar) const
inline

Definition at line 152 of file ossimColumnVector3d.h.

153  {
154  return ossimColumnVector3d( data[0]/scalar,
155  data[1]/scalar,
156  data[2]/scalar);
157  }

◆ operator/=()

const ossimColumnVector3d& ossimColumnVector3d::operator/= ( double  scalar)
inline

Definition at line 159 of file ossimColumnVector3d.h.

160  {
161  data[0]/=scalar;
162  data[1]/=scalar;
163  data[2]/=scalar;
164 
165  return *this;
166  }

◆ operator=()

const ossimColumnVector3d& ossimColumnVector3d::operator= ( const NEWMAT::ColumnVector &  rhs)
inline

Definition at line 61 of file ossimColumnVector3d.h.

62  {
63  if ( (rhs.Ncols() == 1) && (rhs.Nrows() == 3) )
64  {
65  data[0] = rhs[0];
66  data[1] = rhs[1];
67  data[2] = rhs[2];
68  }
69  return *this;
70  }

◆ operator==()

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

Definition at line 184 of file ossimColumnVector3d.h.

References FLT_EPSILON.

185  { return ((fabs(data[0] - rhs[0]) <= FLT_EPSILON) &&
186  (fabs(data[1] - rhs[1]) <= FLT_EPSILON) &&
187  (fabs(data[2] - rhs[2]) <= FLT_EPSILON));
188  }
#define FLT_EPSILON

◆ operator[]() [1/2]

double& ossimColumnVector3d::operator[] ( int  index)
inline

Definition at line 112 of file ossimColumnVector3d.h.

113  {
114  return data[index];
115  }

◆ operator[]() [2/2]

const double& ossimColumnVector3d::operator[] ( int  index) const
inline

Definition at line 117 of file ossimColumnVector3d.h.

118  {
119  return data[index];
120  }

◆ toPoint()

void ossimColumnVector3d::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 54 of file ossimColumnVector3d.cpp.

References ossimString::contains(), data, ossimString::erase(), ossimString::find(), ossim::nan(), and ossimString::toFloat64().

Referenced by ossimEcefVector::toPoint(), and ossimEcefPoint::toPoint().

55 {
56  // Nan out the column vector for starters.
57  data[0] = ossim::nan();
58  data[1] = ossim::nan();
59  data[2] = ossim::nan();
60 
61  std::istringstream is(s);
62 
63  // Check the stream.
64  if (!is) return;
65 
66  //---
67  // Expected input format:
68  // ( 0.0000000, 0.0000000, 0.00000000 )
69  // -----x---- -----y---- -----z----
70  //---
71 
72  const int SZ = 64; // Handle real big number...
73  ossimString os;
74  char buf[SZ];
75  char c = 0;
76 
77  //---
78  // X SECTION:
79  //---
80 
81  // Grab data up to the first comma.
82  is.get(buf, SZ, ',');
83 
84  if (!is) return;
85 
86  // Copy to ossim string.
87  os = buf;
88 
89  // Get rid of the '(' if there is any.
90  std::string::size_type pos = os.find('(');
91  if (pos != std::string::npos)
92  {
93  os.erase(pos, 1);
94  }
95 
96  if (os.contains("nan") == false)
97  {
98  data[0] = os.toFloat64();
99  }
100  else
101  {
102  data[0] = ossim::nan();
103  }
104 
105  // Eat the comma that we stopped at.
106  while (c != ',')
107  {
108  is.get(c);
109  if (!is) break;
110  }
111 
112  //---
113  // Y SECTION:
114  //---
115 
116  // Grab the data up to the next ','
117  is.get(buf, SZ, ',');
118 
119  if (!is) return;
120 
121  // Copy to ossim string.
122  os = buf;
123 
124  if (os.contains("nan") == false)
125  {
126  data[1] = os.toFloat64();
127  }
128  else
129  {
130  data[1] = ossim::nan();
131  }
132 
133  // Eat the comma that we stopped at.
134  c = 0;
135  while (c != ',')
136  {
137  is.get(c);
138  if (!is) break;
139  }
140 
141  //---
142  // Z SECTION:
143  //---
144 
145  // Grab the data up to the ')'
146  is.get(buf, SZ, ')');
147 
148  if (!is) return;
149 
150  // Copy to ossim string.
151  os = buf;
152 
153  if (os.contains("nan") == false)
154  {
155  data[2] = os.toFloat64();
156  }
157  else
158  {
159  data[2] = ossim::nan();
160  }
161 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
bool contains(char aChar) const
Definition: ossimString.h:58
std::string::iterator erase(std::string::iterator p)
Erases the character at position p.
Definition: ossimString.h:736
ossim_float64 toFloat64() const
std::basic_istringstream< char > istringstream
Class for char input memory streams.
Definition: ossimIosFwd.h:32
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()

ossimString ossimColumnVector3d::toString ( ossim_uint32  precision = 15) const

To string method.

Parameters
precisionOutput floating point precision.
Returns
ossimString representing point.

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

Definition at line 17 of file ossimColumnVector3d.cpp.

References data, and ossim::isnan().

Referenced by ossimEcefVector::toString(), and ossimEcefPoint::toString().

18 {
20  os << setprecision(precision);
21 
22  os << "(";
23  if ( ossim::isnan(data[0]) == false)
24  {
25  os << data[0];
26  }
27  else
28  {
29  os << "nan";
30  }
31  os << ",";
32  if ( ossim::isnan(data[1]) == false )
33  {
34  os << data[1];
35  }
36  else
37  {
38  os << "nan";
39  }
40  os << ",";
41  if ( ossim::isnan(data[2]) == false )
42  {
43  os << data[2];
44  }
45  else
46  {
47  os << "nan";
48  }
49  os << ")";
50 
51  return ossimString(os.str());
52 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

◆ unit()

ossimColumnVector3d ossimColumnVector3d::unit ( ) const
inline

Definition at line 212 of file ossimColumnVector3d.h.

References FLT_EPSILON.

Referenced by ossimTopographicCorrectionFilter::computeLightDirection(), ossimBumpShadeTileSource::computeLightDirection(), ossimImageToPlaneNormalFilter::computeNormalsTemplate(), ossimAlphaSensorHSI::imagingRay(), ossimAlphaSensorHRI::imagingRay(), ossimplugins::ossimFormosatModel::imagingRay(), and ossimLsrSpace::ossimLsrSpace().

213  {
214  double mag = magnitude();
215 
216  if(fabs(mag) > FLT_EPSILON)
217  {
218  mag = 1.0/mag;
219  return (*this *mag);
220  }
221 
222  return *this;
223  }
#define FLT_EPSILON

◆ xAligned()

const ossimColumnVector3d& ossimColumnVector3d::xAligned ( )
inline

Definition at line 232 of file ossimColumnVector3d.h.

233  {
234  data[0] = 1;
235  data[1] = 0;
236  data[2] = 0;
237 
238  return *this;
239  }

◆ yAligned()

const ossimColumnVector3d& ossimColumnVector3d::yAligned ( )
inline

Definition at line 240 of file ossimColumnVector3d.h.

241  {
242  data[0] = 0;
243  data[1] = 1;
244  data[2] = 0;
245 
246  return *this;
247  }

◆ zAligned()

const ossimColumnVector3d& ossimColumnVector3d::zAligned ( )
inline

Definition at line 248 of file ossimColumnVector3d.h.

Referenced by ossimHgtRef::getLocalTerrainNormal().

249  {
250  data[0] = 0;
251  data[1] = 0;
252  data[2] = 1;
253 
254  return *this;
255  }

Friends And Related Function Documentation

◆ operator* [1/2]

ossimColumnVector3d operator* ( double  scalar,
const ossimColumnVector3d v 
)
friend

Definition at line 79 of file ossimColumnVector3d.h.

81  {
82  return ossimColumnVector3d(v.data[0]*scalar,
83  v.data[1]*scalar,
84  v.data[2]*scalar);
85  }

◆ operator* [2/2]

ossimColumnVector3d operator* ( const NEWMAT::Matrix &  lhs,
const ossimColumnVector3d rhs 
)
friend

Multiplies column vector times matrix. Note: If "lhs" is not a 3x3 that's an error and a blank column vector is returned.

Definition at line 93 of file ossimColumnVector3d.h.

95  {
96  if ((lhs.Ncols() == 3) && (lhs.Nrows() == 3))
97  {
98  return ossimColumnVector3d( (lhs[0][0]*rhs[0] + lhs[0][1]*rhs[1] + lhs[0][2]*rhs[2]),
99  (lhs[1][0]*rhs[0] + lhs[1][1]*rhs[1] + lhs[1][2]*rhs[2]),
100  (lhs[2][0]*rhs[0] + lhs[2][1]*rhs[1] + lhs[2][2]*rhs[2]));
101  }
102  else if((lhs.Ncols() == 4) && (lhs.Nrows() == 4))
103  {
104  return ossimColumnVector3d( (lhs[0][0]*rhs[0] + lhs[0][1]*rhs[1] + lhs[0][2]*rhs[2] + lhs[0][3]) ,
105  (lhs[1][0]*rhs[0] + lhs[1][1]*rhs[1] + lhs[1][2]*rhs[2] + lhs[1][3]) ,
106  (lhs[2][0]*rhs[0] + lhs[2][1]*rhs[1] + lhs[2][2]*rhs[2] + lhs[2][3]));
107  }
108  ossimNotify(ossimNotifyLevel_WARN) << "Multiplying a 3 row column vector by an invalid matrix" << std::endl;
109  return rhs;
110  }
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ operator<<

ostream& operator<< ( ostream &  out,
const ossimColumnVector3d v 
)
friend

Definition at line 72 of file ossimColumnVector3d.h.

73  {
74  return out << setiosflags(ios::fixed) << setprecision(15)
75  << v[0] << " " << v[1] <<" "
76  << v[2];
77  }

Member Data Documentation

◆ data

double ossimColumnVector3d::data[3]
private

Definition at line 283 of file ossimColumnVector3d.h.

Referenced by toPoint(), and toString().


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