From 4e2910993720c5d8c457ff681b43daf369aa25a6 Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Fri, 9 Feb 2024 16:45:40 +0100 Subject: [PATCH] JKQTPVectorFieldGraph gained the option to also scale the line width with the vector length/magnitude --- doc/CMakeLists.txt | 2 +- ...caleLengthAutoscaleLineWidthFromLength.png | Bin 0 -> 38501 bytes ...noreLengthAutoscaleLineWidthFromLength.png | Bin 0 -> 43962 bytes doc/images/icon_code_16.png | Bin 0 -> 3184 bytes examples/vectorfield/README.md | 12 +++++ examples/vectorfield/vectorfield.cpp | 22 +++++++- lib/jkqtplotter/graphs/jkqtpvectorfield.cpp | 48 +++++++++++++++--- lib/jkqtplotter/graphs/jkqtpvectorfield.h | 42 ++++++++++++++- 8 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 doc/images/JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength.png create mode 100644 doc/images/JKQTPVectorFieldGraphIgnoreLengthAutoscaleLineWidthFromLength.png create mode 100644 doc/images/icon_code_16.png diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 3208f3ef94..db2c5f4b27 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -274,7 +274,7 @@ if(JKQtPlotter_BUILD_EXAMPLES) boxplot/JKQTPBoxplotVerticalGraph,JKQTPBoxplotHorizontalGraph/--iteratefunctorsteps--iteratefunctorsteps_suppressinitial--smallscreenshotplot second_axis/JKQTBasePlotter_addSecondaryYAxis,JKQTBasePlotter_addSecondaryXAxis graphlabels/JKQTPGLabelAwayFromXAxis,JKQTPGLabelAwayFromYAxis,JKQTPGLabelTowardsXAxis,JKQTPGLabelTowardsYAxis,JKQTPGLabelAboveData,JKQTPGLabelRightHandSide,JKQTPGLabelBelowData,JKQTPGLabelLeftHandSide,JKQTPGLSimpleBox,JKQTPGLSimpleBoxVertical,JKQTPGLSimpleBoxAndLine,JKQTPGLSimpleBoxAndLineVertical,JKQTPGLSimpleBoxAndLineONLYLABELS,JKQTPGLSimpleBoxAndLineONLYLABELSVertical/--iteratefunctorsteps--smallscreenshotplot - vectorfield/JKQTPVectorFieldGraph,JKQTPVectorFieldGraphAnchorBottom,JKQTPVectorFieldGraphAnchorMid,JKQTPVectorFieldGraphAnchorTip,JKQTPVectorFieldGraphAutoscaleLength,JKQTPVectorFieldGraphLengthFromData,JKQTPVectorFieldGraphIgnoreLength/--iteratefunctorsteps + vectorfield/JKQTPVectorFieldGraph,JKQTPVectorFieldGraphAnchorBottom,JKQTPVectorFieldGraphAnchorMid,JKQTPVectorFieldGraphAnchorTip,JKQTPVectorFieldGraphAutoscaleLength,JKQTPVectorFieldGraphLengthFromData,JKQTPVectorFieldGraphIgnoreLength,JKQTPVectorFieldGraphIgnoreLengthAutoscaleLineWidthFromLength,JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength/--iteratefunctorsteps ) diff --git a/doc/images/JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength.png b/doc/images/JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength.png new file mode 100644 index 0000000000000000000000000000000000000000..1a737ebf4991f7490ca383bc9b64c58a720d23f6 GIT binary patch literal 38501 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 literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPVectorFieldGraphIgnoreLengthAutoscaleLineWidthFromLength.png b/doc/images/JKQTPVectorFieldGraphIgnoreLengthAutoscaleLineWidthFromLength.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7b00401bbbcb78704b2e6b42af3b46f89e109a GIT binary patch literal 43962 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 W(ad=`wGnCn0000setVectorLengthMode(JKQTPVectorFieldGraph::AutoscaleLength); + graph1->setVectorLineWidthMode(JKQTPVectorFieldGraph::AutoscaleLineWidthFromLength); +``` + +This will result in a plot like this: + +![vectorfield](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/doc/images/JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength.png) diff --git a/examples/vectorfield/vectorfield.cpp b/examples/vectorfield/vectorfield.cpp index 4ef7f1990f..7a44f5ba62 100644 --- a/examples/vectorfield/vectorfield.cpp +++ b/examples/vectorfield/vectorfield.cpp @@ -61,9 +61,9 @@ int main(int argc, char* argv[]) plot.resize(400/plot.devicePixelRatioF(),430/plot.devicePixelRatioF()); - + JKQTPXYScatterGraph* g2; app.addExportStepFunctor([&](){ - JKQTPXYScatterGraph* g2=new JKQTPXYScatterGraph(&plot); + g2=new JKQTPXYScatterGraph(&plot); g2->setXYColumns(columnXY); g2->setTitle("anchor points"); g2->setSymbolSize(5); @@ -97,5 +97,23 @@ int main(int argc, char* argv[]) plot.redrawPlot(); }); + app.addExportStepFunctor([&](){ + g2->setVisible(false); + graph1->setAnchorPoint(JKQTPVectorFieldGraph::AnchorBottom); + graph1->setVectorLengthMode(JKQTPVectorFieldGraph::IgnoreLength); + graph1->setVectorLineWidthMode(JKQTPVectorFieldGraph::AutoscaleLineWidthFromLength); + graph1->setLineWidth(4); + plot.redrawPlot(); + }); + + app.addExportStepFunctor([&](){ + g2->setVisible(false); + graph1->setAnchorPoint(JKQTPVectorFieldGraph::AnchorBottom); + graph1->setVectorLengthMode(JKQTPVectorFieldGraph::AutoscaleLength); + graph1->setVectorLineWidthMode(JKQTPVectorFieldGraph::AutoscaleLineWidthFromLength); + graph1->setLineWidth(4); + plot.redrawPlot(); + }); + return app.exec(); } diff --git a/lib/jkqtplotter/graphs/jkqtpvectorfield.cpp b/lib/jkqtplotter/graphs/jkqtpvectorfield.cpp index f37f3e1b72..d0126afbdc 100644 --- a/lib/jkqtplotter/graphs/jkqtpvectorfield.cpp +++ b/lib/jkqtplotter/graphs/jkqtpvectorfield.cpp @@ -25,7 +25,7 @@ #include #include #include "jkqtcommon/jkqtpdrawingtools.h" -#include "jkqtmath/jkqtpstatisticstools.h" +#include "jkqtmath/jkqtpstatbasics.h" #include "jkqtplotter/jkqtptools.h" #define SmallestGreaterZeroCompare_xvsgz() if ((xvsgz>10.0*DBL_MIN)&&((smallestGreaterZero<10.0*DBL_MIN) || (xvsgzget(static_cast(yColumn),static_cast(i)); const double x=transformX(xv); const double y=transformY(yv); - const QPointF vecv=[&]() { - QPointF vec=getVectorDxDy(i); + const QPointF vec_orig=getVectorDxDy(i); + const QPointF vecv=[&](QPointF vec) { if (m_vectorLengthMode==IgnoreLength) { const double veclen=sqrt(jkqtp_sqr(vec.x())+jkqtp_sqr(vec.y())); if (qFuzzyIsNull(veclen)) vec=QPointF(0,0); else vec/=veclen; // normalize vector } return vec; - }(); + }(vec_orig); const QLineF l=[&]() { switch (m_anchorPoint) { case AnchorBottom: return QLineF(x,y,transformX(xv+scale*vecv.x()),transformY(yv+scale*vecv.y())); @@ -135,7 +142,16 @@ void JKQTPVectorFieldGraph::draw(JKQTPEnhancedPainter &painter) return QLineF(JKQTP_NAN,JKQTP_NAN,JKQTP_NAN,JKQTP_NAN); }(); if (JKQTPIsOKFloat(l) && l.length()>0) { - JKQTPPlotDecoratedLine(painter,l, getTailDecoratorStyle(), calcTailDecoratorSize(p.widthF()), getHeadDecoratorStyle(), calcHeadDecoratorSize(p.widthF())); + double actualLW=p.widthF(); + if (m_vectorLineWidthMode==AutoscaleLineWidthFromLength) { + const double vec_origlen=sqrt(jkqtp_sqr(vec_orig.x())+jkqtp_sqr(vec_orig.y())); + QPen plw=p; + plw.setWidthF(m_minLineWidth+(vec_origlen-minVecLen)/(maxVecLen-minVecLen)*(lw-m_minLineWidth)); + painter.setPen(plw); + actualLW=plw.widthF(); + } + + JKQTPPlotDecoratedLine(painter,l, getTailDecoratorStyle(), calcTailDecoratorSize(actualLW), getHeadDecoratorStyle(), calcHeadDecoratorSize(actualLW)); } } @@ -198,3 +214,23 @@ void JKQTPVectorFieldGraph::setAnchorPoint(VectorAnchorPoint newAnchorPoint) { m_anchorPoint = newAnchorPoint; } + +void JKQTPVectorFieldGraph::setVectorLineWidthMode(VectorLineWidthMode m) +{ + m_vectorLineWidthMode=m; +} + +JKQTPVectorFieldGraph::VectorLineWidthMode JKQTPVectorFieldGraph::getVectorLineWidthMode() const +{ + return m_vectorLineWidthMode; +} + +void JKQTPVectorFieldGraph::setMinLineWidth(double lw) +{ + m_minLineWidth=lw; +} + +double JKQTPVectorFieldGraph::getMinLineWIdth() const +{ + return m_minLineWidth; +} diff --git a/lib/jkqtplotter/graphs/jkqtpvectorfield.h b/lib/jkqtplotter/graphs/jkqtpvectorfield.h index bac312ca0e..d6d0054101 100644 --- a/lib/jkqtplotter/graphs/jkqtpvectorfield.h +++ b/lib/jkqtplotter/graphs/jkqtpvectorfield.h @@ -83,6 +83,11 @@ class JKQTPDatastore; VectorLengthMode. 3. By default, vector start at \c (x,y). But you can also make them be centered around or point to \c (x,y) . This can be set by setAnchorPoint(). + 4. Using setVectorLineWidthMode(JKQTPVectorFieldGraph::AutoscaleLineWidthFromLength) you can also + scale the line width of each vector by the vector's length. This sometimes gives an easier to read + representation of the vector properties, especially if combined with + setVectorLengthMode(JKQTPVectorFieldGraph::IgnoreLength) : + \image html JKQTPVectorFieldGraphIgnoreLengthAutoscaleLineWidthFromLength.png . \see \ref JKQTPlotterVectorFieldExample , JKQTPGraphDecoratedLineStyleMixin , JKQTPXYAndVectorGraph @@ -110,6 +115,15 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVectorFieldGraph: public JKQTPXYAndVectorGraph }; Q_ENUM(VectorLengthMode) + /** \brief describes how the line width scales with the vector properties (or not) */ + enum VectorLineWidthMode { + DefaultVectorLineWidth, //!< \brief line width is equal to JKQTPGraphLineStyleMixin::getLineWidth() for all vectors \image html JKQTPVectorFieldGraphIgnoreLength.png + AutoscaleLineWidthFromLength, //!< \brief line width is determined from the vector length. The maximum line width is given by JKQTPGraphLineStyleMixin::getLineWidth() and the minim line width by getMinLineWidth() \image html JKQTPVectorFieldGraphAutoscaleLengthAutoscaleLineWidthFromLength.png + + + }; + Q_ENUM(VectorLineWidthMode) + /** \brief class constructor */ explicit JKQTPVectorFieldGraph(JKQTBasePlotter* parent=nullptr); /** \brief class constructor */ @@ -143,10 +157,22 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVectorFieldGraph: public JKQTPXYAndVectorGraph /** \copydoc m_anchorPoint */ void setAnchorPoint(VectorAnchorPoint newAnchorPoint); + + /** \copydoc m_vectorLineWidthMode */ + void setVectorLineWidthMode(VectorLineWidthMode m); + /** \copydoc m_vectorLineWidthMode */ + VectorLineWidthMode getVectorLineWidthMode() const; + /** \copydoc m_minLineWidth */ + void setMinLineWidth(double lw); + /** \copydoc m_minLineWidth */ + double getMinLineWIdth() const; + Q_PROPERTY(VectorLengthMode vectorLengthMode READ getVectorLengthMode WRITE setVectorLengthMode ) Q_PROPERTY(bool autoscaleLengthFactor READ getAutoscaleLengthFactor WRITE setAutoscaleLengthFactor ) Q_PROPERTY(double lengthScaleFactor READ getLengthScaleFactor WRITE setLengthScaleFactor ) Q_PROPERTY(VectorAnchorPoint anchorPoint READ getAnchorPoint WRITE setAnchorPoint ) + Q_PROPERTY(double minLineWidth READ getMinLineWIdth WRITE setMinLineWidth ) + Q_PROPERTY(VectorLineWidthMode vectorLineWidthMode READ getVectorLineWidthMode WRITE setVectorLineWidthMode ) protected: private: /** \brief indicates how the length of the drawn vectors are determined from the data @@ -163,7 +189,7 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVectorFieldGraph: public JKQTPXYAndVectorGraph * \image html JKQTPVectorFieldGraphIgnoreLength.png * . * - * \see VectorLengthMode, setVectorLengthMode(), getVectorLengthMode(), m_autoscaleFactor, m_autoscaleLengthFactor + * \see VectorLengthMode, setVectorLengthMode(), getVectorLengthMode(), m_lengthScaleFactor, m_autoscaleLengthFactor */ VectorLengthMode m_vectorLengthMode; /** \brief a scaling factor that can be used to modify the result of the autoscaling algorithm (m_vectorLengthMode \c ==AutoscaleLength) @@ -179,9 +205,21 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPVectorFieldGraph: public JKQTPXYAndVectorGraph double m_lengthScaleFactor; /** \brief defines where the vector is anchored * - * \see VectorAnchorPoint + * \see VectorAnchorPoint, setAnchorPoint(), getAnchorPoint() */ VectorAnchorPoint m_anchorPoint; + /** \brief determines how the line width of the vectors is derived. + * + * \note the available options are described with VectorLineWidthMode + * + * \see setVectorLineWidthMode(), getVectorLineWidthMode(), VectorLineWidthMode, m_minLineWidth + */ + VectorLineWidthMode m_vectorLineWidthMode; + /** \brief minimum line-width in pt, used for some modes of m_vectorLineWidthMode + * + * \see setMinLineWidth(), getMinLineWidth(), m_vectorLineWidthMode + */ + double m_minLineWidth; };