Вот весь код подпрограммы, там нету эффекта от шага(всегда получается то же самое), цикл идет максимум ~50-60 раз.
Код
void circle1::paint(QPainter *painter)
{
painter->save();
int f=5;
//параметры окна
int x=width();
int y=height();
int z=width()/214;
//устанавливаем цвет контура и кисти
QPen pen = QPen(Qt::NoPen);
QRgb red=qRgba(255,0,0,f);
QRgb black=qRgba(0,0,0,f);
QBrush white_brush = QBrush(Qt::white);
QBrush black_brush = QBrush(QColor::fromRgba(qRgba(0,0,0,255)));
QBrush red_brush = QBrush(QColor::fromRgba(qRgba(255,0,0,f)));
painter->setPen(pen);
//вычисляем кол-во зон Фринеля
double m;
m=1/(_distance_to_the_screen*0.01)+(1/((_distance_to_the_screen2-_distance_to_the_screen)*0.01));
m=m*_radius*_radius*0.000001;
m=m/(_wavelength*0.000000001);
//выделяем целую часть числа, рисуем минимумы и максимумы
int k=int(m);
if(k!=0)
{
m=(x/2-2*z)/k;
if(m/k>=0.5)m=int(m)-1;
for(int i=1;i<=k;i++)
{
f=f+5;
red=qRgba(255,0,0,f);
black=qRgba(0,0,0,f);
red_brush.setColor(red);
black_brush.setColor(black);
if(i%2==1)
{
painter->setBrush(red_brush);
painter->drawEllipse(2+m*(i-1),2+m*(i-1),x-4-m*(i-1)*2,y-4-m*(i-1)*2);
}
else
{
painter->setBrush(black_brush);
painter->drawEllipse(2+m*(i-1),2+m*(i-1),x-4-m*(i-1)*2,y-4-m*(i-1)*2);
}
}
}
else
{
int i=0;
painter->setBrush(red_brush);
painter->drawEllipse(2+m*(i-1),2+m*(i-1),x-4-m*(i-1)*2,y-4-m*(i-1)*2);
}
axis(painter);
painter->restore();
}