package graphics.raytracer;
class Vec {
double x, y, z;
public Vec() {
x = 0;
y = 0;
z = 0;
}
public Vec(double ix, double iy, double iz) {
x = ix;
y = iy;
z = iz;
}
public Vec(Vec v) {
x = v.x;
y = v.y;
z = v.z;
}
public void set(double nx, double ny, double nz) {
x = nx;
ny = ny;
z = nz;
}
public void normalize() {
double length;
length = Math.sqrt(x * x + y * y + z * z);
try {
x = x / length;
y = y / length;
z = z / length;
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public double dotProduct(Vec v) {
return ((x * v.x + y * v.y + z * v.z));
}
public void crossProduct(Vec v) {
double tmpx = y * v.z - z * v.y,
tmpy = z * v.x - x * v.z,
tmpz = x * v.y - y * v.x;
x = tmpx;
y = tmpy;
z = tmpz;
}
public void mult(double factor) {
x = x * factor;
y = y * factor;
z = z * factor;
}
public void add(Vec v) {
x = x + v.x;
y = y + v.y;
z = z + v.z;
}
public void sub(Vec v) {
x = x - v.x;
y = y - v.y;
z = z - v.z;
}
public String toString() {
String res = new String("[" + x + ", " + y + ", " + z + "]");
return res;
}
}