john_k
25th September 2014, 13:36
Hope this is usefull for those looking to set a series of polar points onto a QwtPolarPlot with QwtPolarCurve.
class PolarPointSeriesData : public QwtArraySeriesData<QwtPointPolar>
{
public:
PolarPointSeriesData(QVector<QwtPointPolar> samples)
{
setSamples(samples);
}
void setSamples(QVector<QwtPointPolar> samples)
{
d_samples.clear();
d_boundingRect = QRectF();
if (samples.count())
{
QwtInterval xInterval = QwtInterval(samples.at(0).azimuth(), samples.at(0).azimuth());
QwtInterval yInterval = QwtInterval(samples.at(0).radius(), samples.at(0).radius());
foreach (QwtPointPolar sample, samples)
{
d_samples << sample;
xInterval |= sample.azimuth();
yInterval |= sample.radius();
}
d_boundingRect = QRectF(xInterval.minValue(), yInterval.minValue(), xInterval.width(), yInterval.width());
}
}
QRectF boundingRect() const { return d_boundingRect; }
};
Then
PolarPointSeriesData *data = new PolarPointSeriesData(my_Points);
where my_points is a Qvector<QwtPointPolar>
then
my_QwtPolarCurve->setData(data);
then
my_QwtPolarCurve->attach(my_QwtPolarPlot);
class PolarPointSeriesData : public QwtArraySeriesData<QwtPointPolar>
{
public:
PolarPointSeriesData(QVector<QwtPointPolar> samples)
{
setSamples(samples);
}
void setSamples(QVector<QwtPointPolar> samples)
{
d_samples.clear();
d_boundingRect = QRectF();
if (samples.count())
{
QwtInterval xInterval = QwtInterval(samples.at(0).azimuth(), samples.at(0).azimuth());
QwtInterval yInterval = QwtInterval(samples.at(0).radius(), samples.at(0).radius());
foreach (QwtPointPolar sample, samples)
{
d_samples << sample;
xInterval |= sample.azimuth();
yInterval |= sample.radius();
}
d_boundingRect = QRectF(xInterval.minValue(), yInterval.minValue(), xInterval.width(), yInterval.width());
}
}
QRectF boundingRect() const { return d_boundingRect; }
};
Then
PolarPointSeriesData *data = new PolarPointSeriesData(my_Points);
where my_points is a Qvector<QwtPointPolar>
then
my_QwtPolarCurve->setData(data);
then
my_QwtPolarCurve->attach(my_QwtPolarPlot);