Vector3D.java
package com.gwief.jTrace;
/*
Vector3D.java by Damian Newport
Stores a 3D vector and has implements behavioral methods for 3D vectors
*/
public class Vector3D{
public double x,y,z;
public Vector3D(){
x = 0;
y = 0;
z = 0;
}
public Vector3D(double a, double b, double c){
x = a;
y = b;
z = c;
}
public Vector3D(Vector3D a){
x = a.x;
y = a.y;
z = a.z;
}
public final double getx(){return x;}
public final double gety(){return y;}
public final double getz(){return z;}
public final void setx(double a){x = a;}
public final void sety(double a){y = a;}
public final void setz(double a){z = a;}
public final void add(Vector3D a){
x += a.x;
y += a.y;
z += a.z;
}
public final void minus(Vector3D a){
x -= a.x;
y -= a.y;
z -= a.z;
}
public final void minus(double a){
x -= a;
y -= a;
z -= a;
}
public final double dot(Vector3D a){
return ((x*a.x) + (y*a.y) + (z*a.z));
}
public final void cross(Vector3D a){
Vector3D temp = new Vector3D();
temp.x =(y*a.z)-(z*a.y);
temp.y =(z*a.x)-(x*a.z);
temp.z =(x*a.y)-(y*a.x);
x = temp.x;
y = temp.y;
z = temp.z;
}
public final double modulus(){
return Math.sqrt((x*x)+(y*y)+(z*z));
}
public final void unit(){
double temp = this.modulus();
x /= temp;
y /= temp;
z /= temp;
}
public final void multiply(double a){
x *= a;
y *= a;
z *= a;
}
public final void divide(double a){
x /= a;
y /= a;
z /= a;
}
public final void negate(){
x = -x;
y = -y;
z = -z;
}
public final void scale(Vector3D a){
x *= a.x;
y *= a.y;
z *= a.z;
}
public final void translate(Vector3D a){
x += a.x;
y += a.y;
z += a.z;
}
public final void rotateX(double a){
a = Math.toDegrees(a);
y = (y * Math.cos(a)) - (z * Math.sin(a));
z = (y * Math.sin(a)) + (z * Math.cos(a));
}
public final void rotateY(double a){
a = Math.toDegrees(a);
x = (x * Math.cos(a)) - (z * Math.sin(a));
z = (x * Math.sin(a)) + (z * Math.cos(a));
}
public final void rotateZ(double a){
a = Math.toDegrees(a);
x = (x * Math.cos(a)) - (y * Math.sin(a));
y = (x * Math.sin(a)) + (y * Math.cos(a));
}
public final String out(){
String a = "";
a += "x=" + x + ", ";
a += "y=" + y + ", ";
a += "z=" + z;
return a;
}
}