Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by tbezruchenko ( 14 years ago )
void MainWindow::paintEvent(QPaintEvent *event)
{
    N = ui->textKol->text().toInt();
    deg = ui->textDeg->text().toInt();
    C = ui->textC->text().toDouble();
    D = ui->textD->text().toDouble();
    k[0] = ui->textK1->text().toDouble();
    k[1] = ui->textK2->text().toDouble();
    k[2] = ui->textK3->text().toDouble();
    k[3] = ui->textK4->text().toDouble();
    k[4] = ui->textK5->text().toDouble();
    k[5] = ui->textK6->text().toDouble();
    k[6] = ui->textK7->text().toDouble();
    k[7] = ui->textK8->text().toDouble();
    k[8] = ui->textK9->text().toDouble();

    double U1[100];
    double U2[100];

    //=============================================
    //==================Графика====================
    //=============================================
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing, true);

        painter.setPen(Qt::white);
        painter.setBrush(QBrush(Qt::white, Qt::SolidPattern));
        painter.drawRect(0,0,1500,1000);

        painter.setBrush(QBrush(Qt::black, Qt::SolidPattern));
        painter.setPen(Qt::green);


        painter.drawRect(20,40,900,500); // рисуем черный прямоугольник в левой части экрана
        painter.setPen(Qt::white);


        painter.setPen(QPen(Qt::white,3));             // пожирнее линии в качестве осей координат
        painter.drawLine(475,40,475,550);
        painter.setPen(QPen(Qt::white,3));
        painter.drawLine(20,280,900,280);


        painter.setPen(Qt::white);                  // подписываем оси координат и деления на сетке
        painter.drawText(475,290,"(0,0)");
        painter.drawText(900,270,"X");
        painter.drawText(485,60,"P(x)");



        for (double j = 0 ; j < 100 ; j++ )
        {
            double t = C + (D - C) * j / 100 ;
            int q = j;
            U1[q] = (k[0] * sin(t * k[1]) + k[2]*cos(k[3]*t) + k[4] * exp(k[5] * t) + k[6] * t * t + k[7] * t + k[8]);
        }
        double max1 = fabs(U1[0]);
        for (int i = 0; i < 100; i++)
        {
            if (fabs(U1[i]) > max1)
                    max1 = fabs(U1[i]);
        }
        double ste1 = 210 / max1;
        double x1 = 450 / fabs(D);
        double x2 = 450 / fabs(C);
        int m=max1 + 1;
        int xste = x2;
        if (x1 < x2)
            xste = x1;

        for (int i = 0; i!= (900/xste); i++)               // рисуем сетку
        {painter.drawLine(475 + i*xste, 40 , 475 + i*xste,550);}
        for (int i = 0; i!= (900/xste); i++)               // рисуем сетку
        {painter.drawLine(475 - i*xste, 40 , 475 - i*xste,550);}

        for (int i = 0; i!= m; i++)
        {painter.drawLine(20, 280 - i*210 / m , 900 ,280 - i*210 / m);}
        for (int i = 0; i!= m; i++)
        {painter.drawLine(20, 280 + i*210 / m , 900 ,280 + i*210 / m);}
        painter.drawText(475,280 - 210 / m,"(0,1)");
        painter.drawText(475 + xste,290,"(1,0)");

 

Revise this Paste

Your Name: Code Language: