OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimAxes.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts
6 //
7 // Description:
8 //
9 // Contains class declaration for ossimAxes. This will allow you to
10 // define three orthogonal ossimAxes and an origin in 3-D space. This
11 // information will be used to allow you to place points relative
12 // to the defined axes.
13 //*******************************************************************
14 // $Id: ossimAxes.h 9968 2006-11-29 14:01:53Z gpotts $
15 
16 #ifndef ossimAxes_HEADER
17 #define ossimAxes_HEADER
18 #include <iostream>
19 #include <iomanip>
20 using namespace std;
24 {
25 public:
26 
27  friend inline ostream& operator <<(ostream &out, const ossimAxes &axes);
28 
34  const ossimColumnVector3d &xAxis=ossimColumnVector3d(1,0,0),
35  const ossimColumnVector3d &yAxis=ossimColumnVector3d(0,1,0),
36  const ossimColumnVector3d &zAxis=ossimColumnVector3d(0,0,1))
37  :
38  theOrigin(origin),
39  theXAxis(xAxis),
40  theYAxis(yAxis),
41  theZAxis(zAxis)
42  {}
43 
45  {
46  return ossimColumnVector3d(theXAxis.dot(pt),
47  theYAxis.dot(pt),
48  theZAxis.dot(pt));
49  }
50 
52  {
53  return projectPoint(pt - theOrigin);
54  }
55 
56  void rotateAxes(const ossimMatrix3x3& m)
57  {
58  theXAxis = m*theXAxis;
59  theYAxis = m*theYAxis;
60  theZAxis = m*theZAxis;
61  }
62  void rotateAxes(const ossimMatrix4x4& m)
63  {
64  theXAxis = m.rotateOnly(theXAxis);
65  theYAxis = m.rotateOnly(theYAxis);
66  theZAxis = m.rotateOnly(theZAxis);
67  }
69  {
70  theOrigin = m*theOrigin;
71  }
73  {
74  theOrigin = m*theOrigin;
75  }
76  const ossimColumnVector3d& origin()const{return theOrigin;}
77  const ossimColumnVector3d& xAxis()const{return theXAxis;}
78  const ossimColumnVector3d& yAxis()const{return theYAxis;}
79  const ossimColumnVector3d& zAxis()const{return theZAxis;}
80 
81 private:
82  ossimColumnVector3d theOrigin; // Is the origin of this axes
83  ossimColumnVector3d theXAxis; // Is the direction of the x axis
84  ossimColumnVector3d theYAxis; // Is the direction of the y axis
85  ossimColumnVector3d theZAxis; // Is the direction of the z axis
86 };
87 
88 inline ostream& operator <<(ostream &out, const ossimAxes &axes)
89 {
90  return out << "position: " << axes.theOrigin << endl
91  << "x axis : " << axes.theXAxis << endl
92  << "Y axis : " << axes.theYAxis << endl
93  << "z axis : " << axes.theZAxis;
94 }
95 
96 #endif
void rotateAxes(const ossimMatrix4x4 &m)
Definition: ossimAxes.h:62
void rotateAxes(const ossimMatrix3x3 &m)
Definition: ossimAxes.h:56
#define OSSIMDLLEXPORT
ossimColumnVector3d theYAxis
Definition: ossimAxes.h:84
ossimColumnVector3d projectPoint(const ossimColumnVector3d &pt)
Definition: ossimAxes.h:44
ossimAxes(const ossimColumnVector3d &origin=ossimColumnVector3d(0, 0, 0), const ossimColumnVector3d &xAxis=ossimColumnVector3d(1, 0, 0), const ossimColumnVector3d &yAxis=ossimColumnVector3d(0, 1, 0), const ossimColumnVector3d &zAxis=ossimColumnVector3d(0, 0, 1))
Definition: ossimAxes.h:33
const ossimColumnVector3d & zAxis() const
Definition: ossimAxes.h:79
ostream & operator<<(ostream &out, const ossimAxes &axes)
Definition: ossimAxes.h:88
ossimColumnVector3d theOrigin
Definition: ossimAxes.h:82
ossimColumnVector3d pointRelative(const ossimColumnVector3d &pt)
Definition: ossimAxes.h:51
ossimColumnVector4d rotateOnly(const ossimColumnVector4d &rhs) const
void transformOrigin(const ossimMatrix3x3 &m)
Definition: ossimAxes.h:68
const ossimColumnVector3d & origin() const
Definition: ossimAxes.h:76
void transformOrigin(const ossimMatrix4x4 &m)
Definition: ossimAxes.h:72
ossimColumnVector3d theXAxis
Definition: ossimAxes.h:83
const ossimColumnVector3d & yAxis() const
Definition: ossimAxes.h:78
const ossimColumnVector3d & xAxis() const
Definition: ossimAxes.h:77
ossimColumnVector3d theZAxis
Definition: ossimAxes.h:85
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23