/* 
	Grid.java

	[ more java @ mlab - 10-17.1.2000 - juhuu@katastro.fi ]

*/

import java.awt.*;

public class Grid
{
	// grid size
	private	int		nGrid_width;
	private	int		nGrid_height;

	private int		nCoord_amount;
	private float[]		n3d_coords;
	private int[]		n2d_coords;

	public Matrix3D		mat;
	private int		nMax_coords;

	public Grid(int max_coords)
	{
		nMax_coords	= max_coords;	
		nCoord_amount	= 0;

		mat		= new Matrix3D();
		mat.xrot(20);
		mat.yrot(30);

		n3d_coords	= new float[nMax_coords * 3];
		n2d_coords	= new int[nMax_coords * 3];
	}


	public void addpoint(int x, int y)
	{
		if(nCoord_amount < nMax_coords)
		{
			n3d_coords[nCoord_amount * 3 + 0] = x; 
			n3d_coords[nCoord_amount * 3 + 1] = y; 
			n3d_coords[nCoord_amount * 3 + 2] = 0; 
			nCoord_amount++;
		}
	}

	public void draw(Graphics gDrawItHere)
	{
		// transform from 3d to 2d
		mat.transform(n3d_coords, n2d_coords, nCoord_amount);		

		// draw lines
		for (int i = 0 ; i < (nCoord_amount - 1) ; i++)
		{
			gDrawItHere.drawLine(n2d_coords[3*i],
					     n2d_coords[3*i + 1],
					     n2d_coords[3 * (i+1)],
					     n2d_coords[3 * (i+1) + 1]);
		}
	}
}
