public class Point3D  extends Matrix{

	public Point3D() 
	{
	super (1,4);
	set(4,1,1);
	}
	public Point3D(float xval, float yval, float zval)
	{
	super (4,1);
	set(1,1,xval);
	set(2,1,yval);
	set(3,1,zval);
	set(4,1,1);
	}
	public Point3D(float xval, float yval, float zval, float wval ) 
	{
	super (4,1);
	set(1,1,xval);
	set(2,1,yval);
	set(3,1,zval);
	set(4,1,wval);
	
	multiplyScalar(1/wval);
	}
	public Point3D(Matrix ref)
	{
		super(4,1);
		if (ref.rows == 4 && ref.cols == 1)
		{
			array = ref.array;
			multiplyScalar(1/array[3]);
		}
	}
	public final void setx(float newx)
	{
		array[0] = newx;
	}
	public final void sety(float newy)
	{
		array[1] = newy;
	}
	public final void setz(float newz)
	{
		array[2] = newz;
	}
	public String toString() {
		return new String(" ["+x()+", "+y()+", "+z()+"]");
	}
	public final float x()
	{
	return array[0];
	}
	public final float y()
	{
	return array[1];
	}
	public final float z()
	{
	return array[2];
	}
}