Qwt User's Guide 6.2.0

qwt_point_polar.h
1 /******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *****************************************************************************/
9
11 #ifndef QWT_POINT_POLAR_H
12 #define QWT_POINT_POLAR_H
13
14 #include "qwt_global.h"
15 #include "qwt_math.h"
16
17 #include <qpoint.h>
18 #include <qmetatype.h>
19 #include <qmath.h>
20
28 class QWT_EXPORT QwtPointPolar
29 {
30 public:
31 QwtPointPolar();
32 QwtPointPolar( double azimuth, double radius );
33 QwtPointPolar( const QPointF& );
34
35 void setPoint( const QPointF& );
36 QPointF toPoint() const;
37
38 bool isValid() const;
39 bool isNull() const;
40
41 double radius() const;
42 double azimuth() const;
43
44 double& rRadius();
45 double& rAzimuth();
46
47 void setRadius( double );
48 void setAzimuth( double );
49
50 bool operator==( const QwtPointPolar& ) const;
51 bool operator!=( const QwtPointPolar& ) const;
52
53 QwtPointPolar normalized() const;
54
55 private:
56 double m_azimuth;
57 double m_radius;
58 };
59
60 Q_DECLARE_TYPEINFO( QwtPointPolar, Q_MOVABLE_TYPE );
61 Q_DECLARE_METATYPE( QwtPointPolar );
62
63 #ifndef QT_NO_DEBUG_STREAM
64 QWT_EXPORT QDebug operator<<( QDebug, const QwtPointPolar& );
65 #endif
66
71 inline QwtPointPolar::QwtPointPolar()
72 : m_azimuth( 0.0 )
73 , m_radius( 0.0 )
74 {
75 }
76
83 inline QwtPointPolar::QwtPointPolar( double azimuth, double radius )
84 : m_azimuth( azimuth )
85 , m_radius( radius )
86 {
87 }
88
90 inline bool QwtPointPolar::isValid() const
91 {
92 return m_radius >= 0.0;
93 }
94
96 inline bool QwtPointPolar::isNull() const
97 {
98 return m_radius == 0.0;
99 }
100
102 inline double QwtPointPolar::radius() const
103 {
104 return m_radius;
105 }
106
108 inline double QwtPointPolar::azimuth() const
109 {
110 return m_azimuth;
111 }
112
114 inline double& QwtPointPolar::rRadius()
115 {
116 return m_radius;
117 }
118
120 inline double& QwtPointPolar::rAzimuth()
121 {
122 return m_azimuth;
123 }
124
126 inline void QwtPointPolar::setRadius( double radius )
127 {
128 m_radius = radius;
129 }
130
132 inline void QwtPointPolar::setAzimuth( double azimuth )
133 {
134 m_azimuth = azimuth;
135 }
136
137 inline QPoint qwtPolar2Pos( const QPoint& pole,
138 double radius, double angle )
139 {
140 const double x = pole.x() + radius * std::cos( angle );
141 const double y = pole.y() - radius * std::sin( angle );
142
143 return QPoint( qRound( x ), qRound( y ) );
144 }
145
146 inline QPoint qwtDegree2Pos( const QPoint& pole,
147 double radius, double angle )
148 {
149 return qwtPolar2Pos( pole, radius, angle / 180.0 * M_PI );
150 }
151
152 inline QPointF qwtPolar2Pos( const QPointF& pole,
153 double radius, double angle )
154 {
155 const double x = pole.x() + radius * std::cos( angle );
156 const double y = pole.y() - radius * std::sin( angle );
157
158 return QPointF( x, y);
159 }
160
161 inline QPointF qwtDegree2Pos( const QPointF& pole,
162 double radius, double angle )
163 {
164 return qwtPolar2Pos( pole, radius, angle / 180.0 * M_PI );
165 }
166
167 inline QPointF qwtFastPolar2Pos( const QPointF& pole,
168 double radius, double angle )
169 {
170 const double x = pole.x() + radius * qFastCos( angle );
171 const double y = pole.y() - radius * qFastSin( angle );
172
173 return QPointF( x, y);
174 }
175
176 inline QPointF qwtFastDegree2Pos( const QPointF& pole,
177 double radius, double angle )
178 {
179 return qwtFastPolar2Pos( pole, radius, angle / 180.0 * M_PI );
180 }
181
182 inline QwtPointPolar qwtFastPos2Polar( const QPointF& pos )
183 {
184 return QwtPointPolar( qwtFastAtan2( pos.y(), pos.x() ),
185 qSqrt( qwtSqr( pos.x() ) + qwtSqr( pos.y() ) ) );
186 }
187
188 #endif
QwtPointPolar
A point in polar coordinates.
Definition: qwt_point_polar.h:29
QwtPointPolar::radius
double radius() const
Returns the radius.
Definition: qwt_point_polar.h:102
QwtPointPolar::setRadius
void setRadius(double)
Sets the radius to radius.
Definition: qwt_point_polar.h:126
QwtPointPolar::setAzimuth
void setAzimuth(double)
Sets the azimuth to azimuth.
Definition: qwt_point_polar.h:132
QwtPointPolar::QwtPointPolar
QwtPointPolar()
Definition: qwt_point_polar.h:71
QwtPointPolar::isValid
bool isValid() const
Returns true if radius() >= 0.0.
Definition: qwt_point_polar.h:90
QwtPointPolar::azimuth
double azimuth() const
Returns the azimuth.
Definition: qwt_point_polar.h:108
QwtPointPolar::isNull
bool isNull() const
Returns true if radius() >= 0.0.
Definition: qwt_point_polar.h:96
QwtPointPolar::rRadius
double & rRadius()
Returns the radius.
Definition: qwt_point_polar.h:114
QwtPointPolar::rAzimuth
double & rAzimuth()
Returns the azimuth.
Definition: qwt_point_polar.h:120