From 4f847aa6717b4a5cbb19a0f3dd98f6f47ef15f7a Mon Sep 17 00:00:00 2001 From: thepra Date: Mon, 28 Aug 2017 11:44:07 +0200 Subject: [PATCH] rendering astroid --- .gitignore | 1 + renderarea.cpp | 19 ++++++++++++++++++- renderarea.h | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1bc216a..f6b6889 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ QtCurvesCpp.pro.user QtCurvesCpp.pro.user.9311c87 QtCurvesCpp.pro.user +QtCurvesCpp.pro.user diff --git a/renderarea.cpp b/renderarea.cpp index 82d3f1c..d65a863 100644 --- a/renderarea.cpp +++ b/renderarea.cpp @@ -10,6 +10,11 @@ RenderArea::RenderArea(QWidget *parent) : } +QPointF RenderArea::ComputeAstroid(float t){ + double cos_t{cos(t)},sin_t{sin(t)},x{2*cos_t*cos_t*cos_t},y{2*sin_t*sin_t*sin_t}; + return QPointF{x,y}; +} + QSize RenderArea::minimumSizeHint() const { return QSize(100,100); @@ -48,5 +53,17 @@ void RenderArea::paintEvent(QPaintEvent* event) painter.setPen(mShapeColour); painter.drawRect(this->rect()); - painter.drawLine(this->rect().topLeft(),this->rect().bottomRight()); + + QPoint center{this->rect().center()}; + int stepCount{1024}; + double scale{40},intervalLenght{2 * M_PI},step{intervalLenght / stepCount}; + for(float t = 0; t < intervalLenght; t += step){ + QPointF point = ComputeAstroid(t); + + QPoint pixel; + pixel.setX(point.x() * scale + center.x()); + pixel.setY(point.y() * scale + center.y()); + + painter.drawPoint(pixel); + } } diff --git a/renderarea.h b/renderarea.h index f6c1e74..fa1ef0c 100644 --- a/renderarea.h +++ b/renderarea.h @@ -33,6 +33,7 @@ class RenderArea : public QWidget public slots: private: + QPointF ComputeAstroid(float t); QColor mBackgroundColour; QColor mShapeColour; ShapesType mShape;