Функция:
void cDrawField::triangleDraw(double tmpx1, double tmpy1, double tmpx2, double tmpy2, double tmpx3, double tmpy3)
{
double tmpx4, tmpy4, tmpx5, tmpy5, tmpx6, tmpy6;
double sqt;
double a, b, c, p;
painter.drawLine(tmpx1, tmpy1, tmpx2, tmpy2);
painter.drawLine(tmpx2, tmpy2, tmpx3, tmpy3);
painter.drawLine(tmpx3, tmpy3, tmpx1, tmpy1);
tmpx4 = (tmpx1 + tmpx2) / 2;
tmpy4 = (tmpy1 + tmpy1) / 2;
tmpx5 = (tmpx2 + tmpx3) / 2;
tmpy5 = (tmpy2 + tmpy3) / 2;
tmpx6 = (tmpx1 + tmpx3) / 2;
tmpy6 = (tmpy1 + tmpy3) / 2;
a = sqrt(((tmpx4 - tmpx5) * (tmpx4 - tmpx5)) + ((tmpy4 - tmpy5) * (tmpy4 - tmpy5)));
b = sqrt(((tmpx5 - tmpx6) * (tmpx5 - tmpx6)) + ((tmpy5 - tmpy6) * (tmpy5 - tmpy6)));
c = sqrt(((tmpx6 - tmpx4) * (tmpx6 - tmpx4)) + ((tmpy6 - tmpy4) * (tmpy6 - tmpy4)));
p = (a + b + c) / 2;
sqt = sqrt((p - a) * (p - b) * (p - c));
if (sqt > 100)
{
triangleDraw(tmpx1, tmpy1, tmpx4, tmpy4, tmpx5, tmpy5);
triangleDraw(tmpx2, tmpy2, tmpx4, tmpy4, tmpx6, tmpy6);
triangleDraw(tmpx3, tmpy3, tmpx5, tmpy5, tmpx6, tmpy6);
triangleDraw(tmpx4, tmpy4, tmpx5, tmpy5, tmpx6, tmpy6);
}
}
Как видно, там происходит рекурсия. Однако она идет не так как надо - походу учитывается лишь первый вызов функции. Такой же код на javascript (с учетом синтаксиса конечно) отрабатывается верно.
В чем моя ошибка?