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