import java.awt.*;
class TestsWU extends Frame {
public static int xSize = 500;
public static int ySize = 500;
public TestsWU(){
setLayout(null);
setSize(xSize,ySize);
setVisible(true);
}
public static void main( String args[] ) {
Frame frm = (Frame) new TestsWU(); //new Frame();
Graphics g = frm.getGraphics();
g.setColor(new Color(0,0,0));
g.fillRect( 0,0,xSize,ySize);
InitializeISqrt();
int R = 20;
int y=0;
int x=R;
int xCenter = 200;
int yCenter = 200;
int I = 255;
while( y<x ) {
ISQRT( R*R-y*y );
x = ISignificand;
int p = POWERES_OF_TEN[IExponent];
int id = x % p;
int xLeft = (x - id) / p;
int xRight = ((x - id) + p ) / p;
x /= p;
int ILeft = I*(p-id)/p;
int IRight = I* id /p;
//Draw cicle:
g.setColor(new Color(IRight,IRight,IRight));
g.fillRect( xRight+xCenter, yCenter-y, 1, 1 );
g.setColor(new Color(ILeft,ILeft,ILeft));
g.fillRect( xLeft+xCenter, yCenter-y, 1, 1 );
y +=1;
}//while y<x
//Draw coodinate lines:
g.setColor(new Color(0,0,255));
g.drawLine( xCenter, yCenter, xCenter+R, yCenter );
g.drawLine( xCenter, yCenter, xCenter, yCenter-R );
}//main
//Auxiliary array to store precalculated powers of 10:
private static int POWERES_OF_TEN[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
//Primary array where precalculated roots will be stored:
private static int[] ISqrt;
public static void InitializeISqrt() {
ISqrt = new int[10000];
for( int i=0; i<10000; i++ ){
ISqrt[i] = (int) ( Math.sqrt((double)i) * 10000 );
}
}
//Calculating square root represented by integer numbers.
//Input 100>x>=0.
//Output: ISignificand, IExponent
// where
// sqrt(x) = ISignificand * 10^IExponent
public static int IExponent;
public static int ISignificand;
public static void ISQRT( int x ) {
int shift=0;
while ( x>=10000 ) {
x = x/100;
shift +=1;
}
IExponent = 4-shift;
ISignificand = ISqrt[x];
}//ISQRT
}//class
Copyright_C_2008_Landkey_Computers.txt