import java.awt.*; 
import java.applet.Applet; 

public class PackedCircles extends Applet
{
	private Circle redCircle, blueCircle;
	
	public void paint (Graphics g)
	{
		final int diameter = 30, radius = diameter / 2;
		/*	Math.sqrt (3.0) is the tangent of 60 degrees.  This is used
		to calculate the y value in hexagonal coordinates. */
		final int yHeight = (int) (radius * Math.sqrt (3.0) +.5);

		for (int row = 0; row < diameter*10; row += yHeight)
		{
			for (int col = 0; col < diameter*10; col += diameter*2)
			{
				if (row % (yHeight*2) == 0)
				{	
					redCircle = new Circle (Color.red, col, row, diameter);
					blueCircle = new Circle (Color.blue, col+diameter, row, diameter);
				}
				else
				{
					blueCircle = new Circle (Color.blue, col+radius, row, diameter);
					redCircle = new Circle (Color.red, col+radius*3, row, diameter);
				}
				blueCircle.drawCircle (g);
				redCircle.drawCircle (g);
			}
		}
	} // method paint 
} // class PackedCircles

class Circle
{
	private Color color;
	private int x, y, diameter;
	
	Circle (Color c, int xPosition, int yPosition, int d)
	{
		color = c;
		x = xPosition;
		y = yPosition;
		diameter = d;
	} // constructor
	
	public void drawCircle (Graphics g)
	{
		g.setColor (color);
		g.fillOval (x, y, diameter, diameter);
	} // method drawCircle
	
}// class Circle
