// TT4DPoint.java
/**
*
* @author Sean Bridges
* @version 1.0
*
* Represents a point in the 4 dimensional co-ordinate space.
* <x,y,z,w>, 0 <= x,y,z,w <= 2
*/
public class TT4DPoint
{
//----------------------------------------------
//class variables
//base 3, multipliers for x,y,z,w to turn it into an int, which is how
//the point is stored internally.
private static final int dx = 1;
private static final int dy = 3;
private static final int dz = 9;
private static final int dw = 27;
//----------------------------------------------
//class methods
public static void main(String[] args)
{
//a simple test.
System.out.println(new TT4DPoint(0,0,0,0));
System.out.println(new TT4DPoint(1,1,1,1));
System.out.println(new TT4DPoint(1,2,1,2));
System.out.println(new TT4DPoint(0,1,2,1));
}
//----------------------------------------------
//instance variables
private int value;
//----------------------------------------------
//constructors
/** Creates new TT4DPoint
* x,w,z,w must be between 0 and 2 inclusive.
*/
public TT4DPoint(int x, int y, int z, int w)
{
value = (x*dx) + (y*dy) + (z*dz) + (w*dw);
}
/**
* Creates a new TT4DPoint from an integer.
* Point must be of format x + 3y + 9z + 27w
*/
public TT4DPoint(int value)
{
this.value = value;
}
//----------------------------------------------
//instance methods
public int getX()
{
int x,y,z,w;
int temp = value;
w = temp / dw;
temp = temp - (w*dw);
z = temp / dz;
temp = temp - (z*dz);
y = temp / dy;
temp = temp - (y*dy);
x = temp / dx;
return x;
}
public int getY()
{
int y,z,w;
int temp = value;
w = temp / dw;
temp = temp - (w*dw);
z = temp / dz;
temp = temp - (z*dz);
y = temp / dy;
return y;
}
public int getZ()
{
int z,w;
int temp = value;
w = temp / dw;
temp = temp - (w*dw);
z = temp / dz;
return z;
}
public int getW()
{
return value/dw;
}
/**
* Returns the point as an int.
* Value equals x + 3y + 9y + 27w
*/
public int toInt()
{
return value;
}
/**
* Returns the point as a string
*/
public String toString()
{
int x,y,z,w;
int temp = value;
w = temp / dw;
temp = temp - (w*dw);
z = temp / dz;
temp = temp - (z*dz);
y = temp / dy;
temp = temp - (y*dy);
x = temp / dx;
return "<" + x + ","
+ y + ","
+ z + ","
+ w + ">";
}
}//end Class TT4DPoint