| Vec3D library
Simple class for 3D vectors.
// UdK Computational design
// Marius Watz 2003
// http://www.evolutionzone.com/udk/
//
// udk_07_Vec3D
//
// 3D vector library
// General vector class for 3D vectors
class Vec3D {
float x,y,z;
Vec3D(float _x,float _y,float _z) {
x=_x;
y=_y;
z=_z;
}
Vec3D(Vec3D v) {
x=v.x;
y=v.y;
z=v.z;
}
void set(float _x,float _y,float _z) {
x=_x;
y=_y;
z=_z;
}
void set(Vec3D v) {
x=v.x;
y=v.y;
z=v.z;
}
void add(float _x,float _y,float _z) {
x+=_x;
y+=_y;
z+=_z;
}
void add(Vec3D v) {
x+=v.x;
y+=v.y;
z+=v.z;
}
void sub(float _x,float _y,float _z) {
x-=_x;
y-=_y;
z-=_z;
}
void sub(Vec3D v) {
x-=v.x;
y-=v.y;
z-=v.z;
}
void mult(float m) {
x*=m;
y*=m;
z*=m;
}
void div(float m) {
x/=m;
y/=m;
z/=m;
}
float length() {
return sqrt(x*x+y*y+z*z);
}
void normalise() {
float l=length();
if(l!=0) {
x/=l;
y/=l;
z/=l;
}
}
void rotateX(float val) {
// Due to float not being precise enough, double is used for the calculations
double cosval=Math.cos(val);
double sinval=Math.sin(val);
double tmp1=y*cosval - z*sinval;
double tmp2=y*sinval + z*cosval;
y=(float)tmp1;
z=(float)tmp2;
}
void rotateY(float val) {
// Due to float not being precise enough, double is used for the calculations
double cosval=Math.cos(val);
double sinval=Math.sin(val);
double tmp1=x*cosval - z*sinval;
double tmp2=x*sinval + z*cosval;
x=(float)tmp1;
z=(float)tmp2;
}
void rotateZ(float val) {
// Due to float not being precise enough, double is used for the calculations
double cosval=Math.cos(val);
double sinval=Math.sin(val);
double tmp1=x*cosval - y*sinval;
double tmp2=x*sinval + y*cosval;
x=(float)tmp1;
y=(float)tmp2;
}
}
|