Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | Friends
omni::geometry::PolarVec Struct Reference

polar 3D vector defined by th two angles phi, theta and a radial distance More...

#include <PolarVec.h>

Collaboration diagram for omni::geometry::PolarVec:
Collaboration graph
[legend]

Public Member Functions

 PolarVec ()
 default constructor More...
 
 PolarVec (const QVector3D &)
 Construct from QVector3D. More...
 
 PolarVec (const QVector4D &)
 Construct from QVector4D. More...
 
 PolarVec (Angle _longitude, Angle _latitude, qreal _radius)
 Construct from longitude angle, latitude angle and radius. More...
 
const PolarVecoperator= (const QVector3D &)
 Assign from QVector3D. More...
 
 operator QVector3D () const
 QVector3D cast operator. More...
 
 operator QVector4D () const
 QVector4D cast operator. More...
 
const PolarVecoperator+= (const PolarVec &)
 Increase by other PolarVec. More...
 
qreal x () const
 Return x value (by converting to QVector3D internally) More...
 
qreal y () const
 Return y value (by converting to QVector3D internally) More...
 
qreal z () const
 Return z value (by converting to QVector3D internally) More...
 
QVector3D vec () const
 Return converted QVector3D. More...
 
QVector3D normalized () const
 Returns normalized QVector3D. More...
 
Angle longitude () const
 Return longitudinal angle. More...
 
void setLongitude (Angle)
 Set longitudinal angle. More...
 
Angle latitude () const
 Return latitudinal angle. More...
 
void setLatitude (Angle)
 Set latitudinal angle. More...
 
qreal radius () const
 Return radius. More...
 
void setRadius (qreal)
 Set radius. More...
 
void toStream (QDataStream &) const
 Write transformation to stream. More...
 
void fromStream (QDataStream &)
 Read transformation from stream. More...
 

Private Attributes

Angle longitude_
 
Angle latitude_
 
qreal radius_
 

Friends

bool operator== (PolarVec const &, PolarVec const &)
 Test for equality. More...
 

Detailed Description

polar 3D vector defined by th two angles phi, theta and a radial distance

Constructor & Destructor Documentation

omni::geometry::PolarVec::PolarVec ( )

default constructor

28  {}
omni::geometry::PolarVec::PolarVec ( const QVector3D &  _vec)

Construct from QVector3D.

31  {
32  operator=(_vec);
33  }
const PolarVec & operator=(const QVector3D &)
Assign from QVector3D.
Definition: PolarVec.cpp:49
omni::geometry::PolarVec::PolarVec ( const QVector4D &  _vec)

Construct from QVector4D.

36  {
37  if (_vec.w() !=
38  0.0) operator=(QVector3D(_vec.x() / _vec.w(), _vec.y() / _vec.w(),
39  _vec.z() / _vec.w()));
40  else operator=(QVector3D(_vec.x(), _vec.y(), _vec.z()));
41  }
const PolarVec & operator=(const QVector3D &)
Assign from QVector3D.
Definition: PolarVec.cpp:49
omni::geometry::PolarVec::PolarVec ( Angle  _longitude,
Angle  _latitude,
qreal  _radius 
)

Construct from longitude angle, latitude angle and radius.

43  :
44  longitude_(_longitude),
45  latitude_(_latitude),
46  radius_(_radius)
47  {}
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
Angle latitude_
Definition: PolarVec.h:106

Member Function Documentation

void omni::geometry::PolarVec::fromStream ( QDataStream &  _is)

Read transformation from stream.

154  {
155  _is >> longitude_ >> latitude_ >> radius_;
156  }
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
Angle latitude_
Definition: PolarVec.h:106
Angle omni::geometry::PolarVec::latitude ( ) const

Return latitudinal angle.

129  {
130  return latitude_;
131  }
Angle latitude_
Definition: PolarVec.h:106
Angle omni::geometry::PolarVec::longitude ( ) const

Return longitudinal angle.

119  {
120  return longitude_;
121  }
Angle longitude_
Definition: PolarVec.h:106
QVector3D omni::geometry::PolarVec::normalized ( ) const

Returns normalized QVector3D.

114  {
115  return static_cast<QVector3D const&>(*this).normalized();
116  }
omni::geometry::PolarVec::operator QVector3D ( ) const

QVector3D cast operator.

59  {
60  qreal _phi = longitude_.radians();
61  qreal _theta = latitude_.radians();
62 
63  return radius() * QVector3D(
64  sin(_theta) * cos(_phi),
65  sin(_theta) * sin(_phi),
66  cos(_theta));
67  }
Angle longitude_
Definition: PolarVec.h:106
qreal radius() const
Return radius.
Definition: PolarVec.cpp:138
Angle latitude_
Definition: PolarVec.h:106
qreal radians() const
Returns radians.
Definition: Angle.cpp:55
omni::geometry::PolarVec::operator QVector4D ( ) const

QVector4D cast operator.

70  {
71  QVector3D _vec = *this;
72 
73  return QVector4D(_vec.x(), _vec.y(), _vec.z(), 1.0);
74  }
const PolarVec & omni::geometry::PolarVec::operator+= ( const PolarVec _vec)

Increase by other PolarVec.

77  {
78  // add longitude
79  longitude_ += _vec.longitude_;
80 
81  // add latitude
82  latitude_ =
83  Angle(std::min<qreal>(179.99,
84  std::max<qreal>(0.01,
85  latitude_.degrees() +
86  _vec.latitude_.degrees())));
87 
88  // add radius
89  radius_ = std::max<qreal>(0.0, radius_ + _vec.radius_);
90  return *this;
91  }
qreal degrees() const
Return degrees.
Definition: Angle.cpp:49
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
Angle latitude_
Definition: PolarVec.h:106
const PolarVec & omni::geometry::PolarVec::operator= ( const QVector3D &  _vec)

Assign from QVector3D.

50  {
51  radius_ = _vec.length();
52  longitude_ = Angle::fromRad(atan2(_vec.y(), _vec.x()));
53  latitude_ =
54  (radius_ != 0.0) ? Angle::fromRad(acos(_vec.z() / radius_)) : 0.0;
55  return *this;
56  }
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
static Angle fromRad(qreal _angle)
Constructs angle from radians.
Definition: Angle.cpp:67
Angle latitude_
Definition: PolarVec.h:106
qreal omni::geometry::PolarVec::radius ( ) const

Return radius.

139  {
140  return radius_;
141  }
qreal radius_
Definition: PolarVec.h:107
void omni::geometry::PolarVec::setLatitude ( Angle  _latitude)

Set latitudinal angle.

134  {
135  latitude_ = _latitude;
136  }
Angle latitude_
Definition: PolarVec.h:106
void omni::geometry::PolarVec::setLongitude ( Angle  _longitude)

Set longitudinal angle.

124  {
125  longitude_ = _longitude;
126  }
Angle longitude_
Definition: PolarVec.h:106
void omni::geometry::PolarVec::setRadius ( qreal  _radius)

Set radius.

144  {
145  radius_ = _radius;
146  }
qreal radius_
Definition: PolarVec.h:107
void omni::geometry::PolarVec::toStream ( QDataStream &  _os) const

Write transformation to stream.

149  {
150  _os << longitude_ << latitude_ << radius_;
151  }
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
Angle latitude_
Definition: PolarVec.h:106
QVector3D omni::geometry::PolarVec::vec ( ) const

Return converted QVector3D.

109  {
110  return static_cast<QVector3D const&>(*this);
111  }
qreal omni::geometry::PolarVec::x ( ) const

Return x value (by converting to QVector3D internally)

94  {
95  return static_cast<QVector3D const&>(*this).x();
96  }
qreal omni::geometry::PolarVec::y ( ) const

Return y value (by converting to QVector3D internally)

99  {
100  return static_cast<QVector3D const&>(*this).y();
101  }
qreal omni::geometry::PolarVec::z ( ) const

Return z value (by converting to QVector3D internally)

104  {
105  return static_cast<QVector3D const&>(*this).z();
106  }

Friends And Related Function Documentation

bool operator== ( PolarVec const &  _lhs,
PolarVec const &  _rhs 
)
friend

Test for equality.

159  {
160  return
164  }
qreal radius_
Definition: PolarVec.h:107
Angle longitude_
Definition: PolarVec.h:106
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
Angle latitude_
Definition: PolarVec.h:106

Field Documentation

Angle omni::geometry::PolarVec::latitude_
private
Angle omni::geometry::PolarVec::longitude_
private
qreal omni::geometry::PolarVec::radius_
private

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