how to predetermine variables without loop?

Advertisements

Is it possible to predetermine variables x and d to call initialFunction() without while(1) loop?

void function( int xc, int yc, int r, int color ){
    int x = 0;
    int y = r;
    int d = 1-2*r;
    while( 1 ){
        x++;
        d += 4*x-2;
        if( d>0 ){
            initialFunction(x,y,d);
            break;
        }
    }
    while( x>=y ){
        x++;
        d += 4*x-2;
        if( d>0 ){
            // some code
        }
    }
}

>Solution :

Your loop is trying, in succession, cases with x=1, x=2, x=3, ...

The 1st time through, d is 1-2r+(4 * 1-2)

The 2nd time through, d is 1-2r+(4 * 1-2) + (4 * 2-2)

The x time through, d is 1-2r+4*(sum from 1 to x)-2*x

With formula for triangle numbers this is d=1-2r+4*x*(x+1)/2-2x

which simplifies to d=1-2r+2x^2

Then d>0 implies 2x^2>2r-1 or x^2>r-1/2.

So set x=ceil(sqrt(r-0.5)) and d=1-2r+2x^2

Leave a ReplyCancel reply