This commit is contained in:
Caspian Rychlik-Prince 2002-08-28 00:05:45 +00:00
parent 88def41eb8
commit 0e07f02d50
7 changed files with 172 additions and 68 deletions

View File

@ -36,7 +36,8 @@ import java.nio.FloatBuffer;
/**
* $Id$
*
* Base class for matrices.
* Base class for matrices. When a matrix is constructed it will be the identity
* matrix unless otherwise stated.
*
* @author cix_foo <cix_foo@users.sourceforge.net>
* @version $Revision$

View File

@ -84,8 +84,8 @@ public class Matrix2f extends Matrix {
public Matrix load(FloatBuffer buf) {
m00 = buf.get();
m10 = buf.get();
m01 = buf.get();
m10 = buf.get();
m11 = buf.get();
return this;
@ -101,8 +101,8 @@ public class Matrix2f extends Matrix {
public Matrix loadTranspose(FloatBuffer buf) {
m00 = buf.get();
m01 = buf.get();
m10 = buf.get();
m01 = buf.get();
m11 = buf.get();
return this;
@ -115,8 +115,8 @@ public class Matrix2f extends Matrix {
*/
public Matrix store(FloatBuffer buf) {
buf.put(m00);
buf.put(m10);
buf.put(m01);
buf.put(m10);
buf.put(m11);
return this;
}
@ -128,8 +128,8 @@ public class Matrix2f extends Matrix {
*/
public Matrix storeTranspose(FloatBuffer buf) {
buf.put(m00);
buf.put(m01);
buf.put(m10);
buf.put(m01);
buf.put(m11);
return this;
}
@ -293,6 +293,7 @@ public class Matrix2f extends Matrix {
* @return this
*/
public Matrix invert() {
assert false : "Not implemented yet!";
return this;
}
@ -356,6 +357,7 @@ public class Matrix2f extends Matrix {
* @see org.lwjgl.vector.Matrix#determinant()
*/
public float determinant() {
assert false : "Not implemented yet!";
return 0;
}

View File

@ -90,13 +90,13 @@ public class Matrix3f extends Matrix {
public Matrix load(FloatBuffer buf) {
m00 = buf.get();
m10 = buf.get();
m20 = buf.get();
m01 = buf.get();
m11 = buf.get();
m21 = buf.get();
m02 = buf.get();
m10 = buf.get();
m11 = buf.get();
m12 = buf.get();
m20 = buf.get();
m21 = buf.get();
m22 = buf.get();
return this;
@ -112,13 +112,13 @@ public class Matrix3f extends Matrix {
public Matrix loadTranspose(FloatBuffer buf) {
m00 = buf.get();
m01 = buf.get();
m02 = buf.get();
m10 = buf.get();
m11 = buf.get();
m12 = buf.get();
m20 = buf.get();
m01 = buf.get();
m11 = buf.get();
m21 = buf.get();
m02 = buf.get();
m12 = buf.get();
m22 = buf.get();
return this;
@ -131,13 +131,13 @@ public class Matrix3f extends Matrix {
*/
public Matrix store(FloatBuffer buf) {
buf.put(m00);
buf.put(m10);
buf.put(m20);
buf.put(m01);
buf.put(m11);
buf.put(m21);
buf.put(m02);
buf.put(m10);
buf.put(m11);
buf.put(m12);
buf.put(m20);
buf.put(m21);
buf.put(m22);
return this;
}
@ -149,13 +149,13 @@ public class Matrix3f extends Matrix {
*/
public Matrix storeTranspose(FloatBuffer buf) {
buf.put(m00);
buf.put(m01);
buf.put(m02);
buf.put(m10);
buf.put(m11);
buf.put(m12);
buf.put(m20);
buf.put(m01);
buf.put(m11);
buf.put(m21);
buf.put(m02);
buf.put(m12);
buf.put(m22);
return this;
}
@ -366,6 +366,7 @@ public class Matrix3f extends Matrix {
* @return this
*/
public Matrix invert() {
assert false : "Not implemented yet!";
return this;
}

View File

@ -39,6 +39,16 @@ import java.nio.FloatBuffer;
* @author foo
*/
public class Matrix4f extends Matrix {
public float m00 = 1.0f, m01, m02, m03, m10, m11 = 1.0f, m12, m13, m20, m21, m22 = 1.0f, m23, m30, m31, m32, m33 = 1.0f;
/**
* Construct a Matrix4f
*/
public Matrix4f() {
super();
}
/**
* Set this matrix to be the identity matrix.
* @return this
@ -91,15 +101,6 @@ public class Matrix4f extends Matrix {
}
public float m00 = 1.0f, m01, m02, m03, m10, m11 = 1.0f, m12, m13, m20, m21, m22 = 1.0f, m23, m30, m31, m32, m33 = 1.0f;
/**
* Construct a Matrix4f
*/
public Matrix4f() {
super();
}
/**
* Load from another matrix4f
* @param src The source matrix
@ -137,20 +138,20 @@ public class Matrix4f extends Matrix {
public Matrix load(FloatBuffer buf) {
m00 = buf.get();
m10 = buf.get();
m20 = buf.get();
m30 = buf.get();
m01 = buf.get();
m11 = buf.get();
m21 = buf.get();
m31 = buf.get();
m02 = buf.get();
m12 = buf.get();
m22 = buf.get();
m32 = buf.get();
m03 = buf.get();
m10 = buf.get();
m11 = buf.get();
m12 = buf.get();
m13 = buf.get();
m20 = buf.get();
m21 = buf.get();
m22 = buf.get();
m23 = buf.get();
m30 = buf.get();
m31 = buf.get();
m32 = buf.get();
m33 = buf.get();
return this;
@ -166,20 +167,20 @@ public class Matrix4f extends Matrix {
public Matrix loadTranspose(FloatBuffer buf) {
m00 = buf.get();
m01 = buf.get();
m02 = buf.get();
m03 = buf.get();
m10 = buf.get();
m11 = buf.get();
m12 = buf.get();
m13 = buf.get();
m20 = buf.get();
m21 = buf.get();
m22 = buf.get();
m23 = buf.get();
m30 = buf.get();
m01 = buf.get();
m11 = buf.get();
m21 = buf.get();
m31 = buf.get();
m02 = buf.get();
m12 = buf.get();
m22 = buf.get();
m32 = buf.get();
m03 = buf.get();
m13 = buf.get();
m23 = buf.get();
m33 = buf.get();
return this;
@ -192,20 +193,20 @@ public class Matrix4f extends Matrix {
*/
public Matrix store(FloatBuffer buf) {
buf.put(m00);
buf.put(m10);
buf.put(m20);
buf.put(m30);
buf.put(m01);
buf.put(m11);
buf.put(m21);
buf.put(m31);
buf.put(m02);
buf.put(m12);
buf.put(m22);
buf.put(m32);
buf.put(m03);
buf.put(m10);
buf.put(m11);
buf.put(m12);
buf.put(m13);
buf.put(m20);
buf.put(m21);
buf.put(m22);
buf.put(m23);
buf.put(m30);
buf.put(m31);
buf.put(m32);
buf.put(m33);
return this;
}
@ -217,20 +218,20 @@ public class Matrix4f extends Matrix {
*/
public Matrix storeTranspose(FloatBuffer buf) {
buf.put(m00);
buf.put(m01);
buf.put(m02);
buf.put(m03);
buf.put(m10);
buf.put(m11);
buf.put(m12);
buf.put(m13);
buf.put(m20);
buf.put(m21);
buf.put(m22);
buf.put(m23);
buf.put(m30);
buf.put(m01);
buf.put(m11);
buf.put(m21);
buf.put(m31);
buf.put(m02);
buf.put(m12);
buf.put(m22);
buf.put(m32);
buf.put(m03);
buf.put(m13);
buf.put(m23);
buf.put(m33);
return this;
}
@ -424,6 +425,76 @@ public class Matrix4f extends Matrix {
return this;
}
/**
* Translate this matrix
* @param vec The vector to translate by
* @return this
*/
public Matrix4f translate(Vector2f vec) {
m30 += m00 * vec.x + m10 * vec.y;
m31 += m01 * vec.x + m11 * vec.y;
m32 += m02 * vec.x + m12 * vec.y;
m33 += m03 * vec.x + m13 * vec.y;
return this;
}
/**
* Translate this matrix
* @param vec The vector to translate by
* @return this
*/
public Matrix4f translate(Vector3f vec) {
m30 += m00 * vec.x + m10 * vec.y + m20 * vec.z;
m31 += m01 * vec.x + m11 * vec.y + m21 * vec.z;
m32 += m02 * vec.x + m12 * vec.y + m22 * vec.z;
m33 += m03 * vec.x + m13 * vec.y + m23 * vec.z;
return this;
}
/**
* Translate this matrix and stash the result in another matrix
* @param vec The vector to translate by
* @param dest The destination matrix or null if a new matrix is to be created
* @return the translated matrix
*/
public Matrix4f translate(Vector3f vec, Matrix4f dest) {
if (dest == null)
dest = new Matrix4f();
else if (dest == this)
return translate(vec);
dest.m30 += m00 * vec.x + m10 * vec.y + m20 * vec.z;
dest.m31 += m01 * vec.x + m11 * vec.y + m21 * vec.z;
dest.m32 += m02 * vec.x + m12 * vec.y + m22 * vec.z;
dest.m33 += m03 * vec.x + m13 * vec.y + m23 * vec.z;
return dest;
}
/**
* Translate this matrix and stash the result in another matrix
* @param vec The vector to translate by
* @param dest The destination matrix or null if a new matrix is to be created
* @return the translated matrix
*/
public Matrix4f translate(Vector2f vec, Matrix4f dest) {
if (dest == null)
dest = new Matrix4f();
else if (dest == this)
return translate(vec);
dest.m30 += m00 * vec.x + m10 * vec.y;
dest.m31 += m01 * vec.x + m11 * vec.y;
dest.m32 += m02 * vec.x + m12 * vec.y;
dest.m33 += m03 * vec.x + m13 * vec.y;
return dest;
}
/**
* Transpose this matrix and place the result in another matrix
* @param dest The destination matrix or null if a new matrix is to be created
@ -488,6 +559,7 @@ public class Matrix4f extends Matrix {
* @return this
*/
public Matrix invert() {
assert false : "Not implemented yet!";
return this;
}

View File

@ -83,7 +83,7 @@ public abstract class Vector {
* Normalise this vector
* @return this
*/
public final Vector normalise() {
public final Vector normalize() {
float l = 1.0f / length();
return scale(l);
}

View File

@ -151,7 +151,7 @@ public class Vector2f extends Vector {
/**
* The dot product of two vectors is calculated as
* v1.x * v2.x + v1.y * v2.y
* v1.x * v2.x + v1.y * v2.y + v1.z * v2.z
* @param left The LHS vector
* @param right The RHS vector
* @return left dot right
@ -159,6 +159,8 @@ public class Vector2f extends Vector {
public static float dot(Vector2f left, Vector2f right) {
return left.x * right.x + left.y * right.y;
}
/**
* Calculate the angle between two vectors, in degrees

View File

@ -143,6 +143,32 @@ public class Vector3f extends Vector {
return dest.set(left.x - right.x, left.y - right.y, left.z - right.z);
}
}
/**
* The cross product of two vectors.
*
* @param left The LHS vector
* @param right The RHS vector
* @param dest The destination result, or null if a new vector is to be created
* @return left cross right
*/
public static Vector3f cross(
Vector3f left,
Vector3f right,
Vector3f dest)
{
if (dest == null)
dest = new Vector3f();
dest.set(
left.y * right.z - left.z * right.y,
right.x * left.z - right.z * left.x,
left.x * right.y - left.y * right.x
);
return dest;
}