Не могу корректно отрисовать график, выходит за границы экрана
Отрисовка графика диф. уравнения вручную(я не специально создаю велосипед, так надо по заданию) через QPainter
#include "chart.h"
#include "mainwindow.h"
Chart::Chart(QWidget *parent) : QWidget(parent)
{
x0 = x = yx0 = y = C = 0;
scale = 20; // масштаб клеток/отрезков
}
void Chart::paintEvent(QPaintEvent*){
painter.begin(this);
painter.setBackgroundMode(Qt::OpaqueMode);
painter.setBackground(Qt::white);
pen.setColor(Qt::gray);
pen.setWidth(2);
painter.setPen(pen);
for(int i = 0; i < width(); i+=scale){
painter.drawLine(i, 0, i, height());
painter.drawLine(0, i, width(), i);
}
pen.setColor(QColor(220, 20, 60));
pen.setWidth(3);
painter.setPen(pen);
painter.drawLine(width()/2, 0, width()/2, height()); // ось Y
QPolygon arrowY;
arrowY << QPoint(width()/2, 0) << QPoint((width()/2)-20, 20); //левая часть стрелки
arrowY << QPoint(width()/2, 0) << QPoint((width()/2)+20, 20); //правая часть стрелки
painter.drawPolygon(arrowY);
painter.drawLine(0, (height()/2), width(), (height()/2)); // ось X
QPolygon arrowX;
arrowX << QPoint(width(), height()/2) << QPoint((width())-20, (height()/2)-20); //верхняя часть стрелки
arrowX << QPoint(width(), height()/2) << QPoint((width())-20,(height()/2)+20); //нижняя часть стрелки
painter.drawPolygon(arrowX);
for(int i = 0; i < width(); i+=scale){
painter.drawLine(i, (height()/2)-5, i, (height()/2)+5); // отрезки слева направо
}
for(int i = 0; i < height(); i+=scale){
painter.drawLine((width()/2)-5, i, (width()/2)+5, i); // отрезки сверху вниз
}
for(int i =0; i < width(); i++) {
y = ((qExp(2*x)/4) + (C/qExp(2*x)) - 2000);
//y++;
painter.drawPoint(QPoint(width()/2, height()/2)+QPoint(x, y/1000)); // частное решение диф . уравнения которое я и отрисовываю
x++;
}
painter.end();
}
Переменную "C" беру из главного окна:
void MainWindow::drawChart(){
chart->x0 = line_x0->text().toDouble();
chart->yx0 = line_yx0->text().toDouble();
chart->C = qExp(2*chart->x0)*(2000-(qExp(2*chart->x0)/4)+chart->yx0); // C = e^2x0(2000-(e^2x0/4)+y(x0))
line_x0->setText(QString::number(chart->y));
chart->repaint();
}
Собственно, суть в том что все эти позиции x и у не отмасштабированы, и я без понятия как сделать этот масштаб, график просто вылетает за зону видимости. Мне нужно понять как масштабировать график