11 #ifndef _QWT_POINT_POLAR_H_
12 #define _QWT_POINT_POLAR_H_ 1
14 #include "qwt_global.h"
17 #ifndef QT_NO_DEBUG_STREAM
35 void setPoint(
const QPointF & );
36 QPointF toPoint()
const;
41 double radius()
const;
42 double azimuth()
const;
47 void setRadius(
double );
48 void setAzimuth(
double );
85 return d_radius >= 0.0;
91 return d_radius == 0.0;
130 #ifndef QT_NO_DEBUG_STREAM
131 QWT_EXPORT QDebug operator<<( QDebug,
const QwtPointPolar & );
134 inline QPoint qwtPolar2Pos(
const QPoint &pole,
135 double radius,
double angle )
137 const double x = pole.x() + radius * qCos( angle );
138 const double y = pole.y() - radius * qSin( angle );
140 return QPoint( qRound( x ), qRound( y ) );
143 inline QPoint qwtDegree2Pos(
const QPoint &pole,
144 double radius,
double angle )
146 return qwtPolar2Pos( pole, radius, angle / 180.0 * M_PI );
149 inline QPointF qwtPolar2Pos(
const QPointF &pole,
150 double radius,
double angle )
152 const double x = pole.x() + radius * qCos( angle );
153 const double y = pole.y() - radius * qSin( angle );
155 return QPointF( x, y);
158 inline QPointF qwtDegree2Pos(
const QPointF &pole,
159 double radius,
double angle )
161 return qwtPolar2Pos( pole, radius, angle / 180.0 * M_PI );
164 inline QPointF qwtFastPolar2Pos(
const QPointF &pole,
165 double radius,
double angle )
167 #if QT_VERSION < 0x040601
168 const double x = pole.x() + radius * ::cos( angle );
169 const double y = pole.y() - radius * ::sin( angle );
171 const double x = pole.x() + radius * qFastCos( angle );
172 const double y = pole.y() - radius * qFastSin( angle );
175 return QPointF( x, y);
178 inline QPointF qwtFastDegree2Pos(
const QPointF &pole,
179 double radius,
double angle )
181 return qwtFastPolar2Pos( pole, radius, angle / 180.0 * M_PI );
187 qSqrt( qwtSqr( pos.x() ) + qwtSqr( pos.y() ) ) );