diff --git a/src/gl_engine/graphics/GraphicsHelpers.java b/src/gl_engine/graphics/GraphicsHelpers.java index b9867f6..f0f6507 100644 --- a/src/gl_engine/graphics/GraphicsHelpers.java +++ b/src/gl_engine/graphics/GraphicsHelpers.java @@ -19,6 +19,7 @@ import static org.lwjgl.opengl.GL11.glEnable; import static org.lwjgl.opengl.GL11.glViewport; import org.lwjgl.opengl.GL; +import org.lwjgl.opengl.GL33; public class GraphicsHelpers { diff --git a/src/gl_engine/matrix/Matrix4.java b/src/gl_engine/matrix/Matrix4.java index 4bd05ac..a1765fd 100644 --- a/src/gl_engine/matrix/Matrix4.java +++ b/src/gl_engine/matrix/Matrix4.java @@ -102,13 +102,12 @@ public class Matrix4 implements IBdfClassManager public static Vec3d multiply(Matrix4 mat, Vec3d vec) { - Vec3d result = new Vec3d(0, 0, 0); + double x = mat.get(0, 0) * vec.x + mat.get(1, 0) * vec.y + mat.get(2, 0) * vec.z + mat.get(3, 0); + double y = mat.get(0, 1) * vec.x + mat.get(1, 1) * vec.y + mat.get(2, 1) * vec.z + mat.get(3, 1); + double z = mat.get(0, 2) * vec.x + mat.get(1, 2) * vec.y + mat.get(2, 2) * vec.z + mat.get(3, 2); + double m = mat.get(0, 3) * vec.x + mat.get(1, 3) * vec.y + mat.get(2, 3) * vec.z + mat.get(3, 3); - result.x = mat.get(0, 0) * vec.x + mat.get(1, 0) * vec.y + mat.get(2, 0) * vec.z + mat.get(3, 0); - result.y = mat.get(0, 1) * vec.x + mat.get(1, 1) * vec.y + mat.get(2, 1) * vec.z + mat.get(3, 1); - result.z = mat.get(0, 2) * vec.x + mat.get(1, 2) * vec.y + mat.get(2, 2) * vec.z + mat.get(3, 2); - - return result; + return new Vec3d(x / m, y / m, z / m); } public static Matrix4 transform(Vec3d position, Vec3d rotation, Vec3d scale) diff --git a/src/gl_engine/vec/Vec2d.java b/src/gl_engine/vec/Vec2d.java index e3fb8bf..084b09c 100755 --- a/src/gl_engine/vec/Vec2d.java +++ b/src/gl_engine/vec/Vec2d.java @@ -76,11 +76,8 @@ public class Vec2d implements IBdfClassManager return new Vec2d(x, y); } - public double squareDistance(Vec2d other) - { - double dx = MathHelpers.positive(other.x - x); - double dy = MathHelpers.positive(other.y - y); - return MathHelpers.biggest(dx, dy); + public double squareDistance(Vec2d other) { + return Math.abs(other.x - x) + Math.abs(other.y - y); } public Vec2i toInt() { diff --git a/src/gl_engine/vec/Vec2i.java b/src/gl_engine/vec/Vec2i.java index a0a80fe..40eb8b4 100755 --- a/src/gl_engine/vec/Vec2i.java +++ b/src/gl_engine/vec/Vec2i.java @@ -89,11 +89,8 @@ public class Vec2i implements IBdfClassManager return new Vec2i(x, y); } - public double squareDistance(Vec2i other) - { - int dx = MathHelpers.positive(other.x - x); - int dy = MathHelpers.positive(other.y - y); - return MathHelpers.biggest(dx, dy); + public double squareDistance(Vec2i other) { + return Math.abs(other.x - x) + Math.abs(other.y - y); } public Vec2d toDouble() { diff --git a/src/gl_engine/vec/Vec3d.java b/src/gl_engine/vec/Vec3d.java index 4ad80a7..a3ce3cf 100755 --- a/src/gl_engine/vec/Vec3d.java +++ b/src/gl_engine/vec/Vec3d.java @@ -86,15 +86,8 @@ public class Vec3d implements IBdfClassManager return new Vec3d(x, y, z); } - public double squareDistance(Vec3d other) - { - double dx = MathHelpers.positive(other.x - x); - double dy = MathHelpers.positive(other.y - y); - double dz = MathHelpers.positive(other.z - z); - - if(dx > dy) return dx; - if(dy > dz) return dy; - else return dz; + public double squareDistance(Vec3d other) { + return Math.abs(other.x - x) + Math.abs(other.y - y) + Math.abs(other.z - z); } public Vec3i toInt() { diff --git a/src/gl_engine/vec/Vec3i.java b/src/gl_engine/vec/Vec3i.java index e1f8bf3..c65a7b8 100755 --- a/src/gl_engine/vec/Vec3i.java +++ b/src/gl_engine/vec/Vec3i.java @@ -105,15 +105,8 @@ public class Vec3i implements IBdfClassManager return new Vec3i(x, y, z); } - public int squareDistance(Vec3i other) - { - int dx = MathHelpers.positive(other.x - x); - int dy = MathHelpers.positive(other.y - y); - int dz = MathHelpers.positive(other.z - z); - - if(dx > dy) return dx; - if(dy > dz) return dy; - else return dz; + public int squareDistance(Vec3i other) { + return Math.abs(other.x - x) + Math.abs(other.y - y) + Math.abs(other.z - z); } public Vec3d toDouble() { diff --git a/src/gl_engine/vec/Vec4d.java b/src/gl_engine/vec/Vec4d.java index a834c3e..bdd2f1c 100755 --- a/src/gl_engine/vec/Vec4d.java +++ b/src/gl_engine/vec/Vec4d.java @@ -108,17 +108,8 @@ public class Vec4d implements IBdfClassManager return new Vec4d(x, y, z, m); } - public double squareDistance(Vec4d other) - { - double dx = MathHelpers.positive(other.x - x); - double dy = MathHelpers.positive(other.y - y); - double dz = MathHelpers.positive(other.z - z); - double dm = MathHelpers.positive(other.m - m); - - if(dx > dy) return dx; - if(dy > dz) return dy; - if(dz > dm) return dz; - else return dm; + public double squareDistance(Vec4d other) { + return Math.abs(other.x - x) + Math.abs(other.y - y) + Math.abs(other.z - z) + Math.abs(other.m - m); } public Vec4i toInt() { diff --git a/src/gl_engine/vec/Vec4i.java b/src/gl_engine/vec/Vec4i.java index ba06af3..f736ebb 100755 --- a/src/gl_engine/vec/Vec4i.java +++ b/src/gl_engine/vec/Vec4i.java @@ -133,17 +133,8 @@ public class Vec4i implements IBdfClassManager return new Vec4i(x, y, z, m); } - public int squareDistance(Vec4i other) - { - int dx = MathHelpers.positive(other.x - x); - int dy = MathHelpers.positive(other.y - y); - int dz = MathHelpers.positive(other.z - z); - int dm = MathHelpers.positive(other.m - m); - - if(dx > dy) return dx; - if(dy > dz) return dy; - if(dz > dm) return dz; - else return dm; + public int squareDistance(Vec4i other) { + return Math.abs(other.x - x) + Math.abs(other.y - y) + Math.abs(other.z - z) + Math.abs(other.m - m); } public Vec4d toDouble() {