diff --git a/pom.xml b/pom.xml index 2b0b35a..69fba72 100644 --- a/pom.xml +++ b/pom.xml @@ -17,12 +17,6 @@ - - - javax.vecmath - vecmath - 1.5.2 - diff --git a/src/sig/Matrix.java b/src/sig/Matrix.java index ea48945..2a6e627 100644 --- a/src/sig/Matrix.java +++ b/src/sig/Matrix.java @@ -1,14 +1,12 @@ package sig; -import javax.vecmath.Vector3f; - public class Matrix { float[][] m = new float[4][4]; Matrix(float[][]m) { this.m=m; } - public static void MultiplyMatrixVector(Vector3f i,Vector3f o,Matrix m) { + public static void MultiplyMatrixVector(Vector i,Vector o,Matrix m) { o.x=i.x*m.m[0][0]+i.y*m.m[1][0]+i.z*m.m[2][0]+m.m[3][0]; o.y=i.x*m.m[0][1]+i.y*m.m[1][1]+i.z*m.m[2][1]+m.m[3][1]; o.z=i.x*m.m[0][2]+i.y*m.m[1][2]+i.z*m.m[2][2]+m.m[3][2]; diff --git a/src/sig/Panel.java b/src/sig/Panel.java index fa774de..554785e 100644 --- a/src/sig/Panel.java +++ b/src/sig/Panel.java @@ -1,6 +1,5 @@ package sig; import javax.swing.JPanel; -import javax.vecmath.Vector3f; import sig.utils.DrawUtils; @@ -103,7 +102,7 @@ public class Panel extends JPanel implements Runnable { fTheta+=0.01f; for (Triangle t : SigRenderer.cube.triangles) { - Triangle triProjected = new Triangle(new Vector3f(),new Vector3f(),new Vector3f()),triTranslated=new Triangle(new Vector3f(),new Vector3f(),new Vector3f()),triRotatedZ=new Triangle(new Vector3f(),new Vector3f(),new Vector3f()),triRotatedZX=new Triangle(new Vector3f(),new Vector3f(),new Vector3f()); + Triangle triProjected = new Triangle(new Vector(),new Vector(),new Vector()),triTranslated=new Triangle(new Vector(),new Vector(),new Vector()),triRotatedZ=new Triangle(new Vector(),new Vector(),new Vector()),triRotatedZX=new Triangle(new Vector(),new Vector(),new Vector()); Matrix.MultiplyMatrixVector(t.A, triRotatedZ.A, matRotZ); @@ -119,7 +118,7 @@ public class Panel extends JPanel implements Runnable { triTranslated.B.z=triRotatedZX.B.z+6f; triTranslated.C.z=triRotatedZX.C.z+6f; - Vector3f normal=new Vector3f(),line1=new Vector3f(),line2=new Vector3f(); + Vector normal=new Vector(),line1=new Vector(),line2=new Vector(); line1.x=triTranslated.B.x-triTranslated.A.x; line1.y=triTranslated.B.y-triTranslated.A.y; line1.z=triTranslated.B.z-triTranslated.A.z; @@ -138,7 +137,7 @@ public class Panel extends JPanel implements Runnable { normal.y*(triTranslated.A.y-SigRenderer.vCamera.y)+ normal.z*(triTranslated.A.z-SigRenderer.vCamera.z)<0) { - Vector3f lightDir = new Vector3f(0,0,-1); + Vector lightDir = new Vector(0,0,-1); l = (float)Math.sqrt(lightDir.x*lightDir.x+lightDir.y*lightDir.y+lightDir.z*lightDir.z); lightDir.x/=l; lightDir.y/=l; lightDir.z/=l; @@ -181,8 +180,6 @@ public class Panel extends JPanel implements Runnable { DrawUtils.DrawTriangle(p,(int)t.A.x,(int)t.A.y,(int)t.B.x,(int)t.B.y,(int)t.C.x,(int)t.C.y,Color.BLACK); } } - endTime=System.nanoTime(); - SigRenderer.DRAWLOOPTIME=(endTime-startTime)/1000000f; } public void repaint() { @@ -199,6 +196,8 @@ public class Panel extends JPanel implements Runnable { mImageProducer.newPixels(); // draw it on panel g.drawImage(this.imageBuffer, 0, 0, this); + endTime=System.nanoTime(); + SigRenderer.DRAWLOOPTIME=(endTime-startTime)/1000000f; } /** diff --git a/src/sig/SigRenderer.java b/src/sig/SigRenderer.java index b0e3d05..fa3b8bf 100644 --- a/src/sig/SigRenderer.java +++ b/src/sig/SigRenderer.java @@ -1,25 +1,15 @@ package sig; import javax.swing.JFrame; -import javax.vecmath.Matrix4f; -import javax.vecmath.Point2d; -import javax.vecmath.Tuple3d; -import javax.vecmath.Vector3f; -import sig.utils.DrawUtils; import sig.utils.OBJReader; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; -import java.io.File; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.awt.Toolkit; -import java.awt.Color; -import java.awt.Dimension; import java.awt.BorderLayout; public class SigRenderer implements KeyListener,MouseListener,MouseMotionListener{ @@ -34,7 +24,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene public static float DRAWLOOPTIME=0; public static final float RESOLUTION=1; - public static Vector3f origin = new Vector3f(0,0,10); + public static Vector origin = new Vector(0,0,10); public static float rot = (float)Math.PI/4; //In radians. public static List pixels; @@ -52,7 +42,7 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene {0,0,(-fFar*fNear)/(fFar-fNear),0f}, }); - public static Vector3f vCamera = new Vector3f(); + public static Vector vCamera = new Vector(); public void runGameLoop() { rot+=Math.PI/480d; @@ -142,16 +132,12 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_UP:{ - origin.add(new Vector3f(0,0,-0.05f)); }break; case KeyEvent.VK_RIGHT:{ - origin.add(new Vector3f(0.05f,0,0)); }break; case KeyEvent.VK_LEFT:{ - origin.add(new Vector3f(-0.05f,0,0)); }break; case KeyEvent.VK_DOWN:{ - origin.add(new Vector3f(0,0,0.05f)); }break; } } diff --git a/src/sig/Triangle.java b/src/sig/Triangle.java index 153a552..18daca3 100644 --- a/src/sig/Triangle.java +++ b/src/sig/Triangle.java @@ -1,18 +1,17 @@ package sig; -import javax.vecmath.Vector3f; import java.awt.Color; public class Triangle { - Vector3f A,B,C; + Vector A,B,C; Color col = Color.WHITE; - public Triangle(Vector3f A,Vector3f B,Vector3f C) { + public Triangle(Vector A,Vector B,Vector C) { this.A=A; this.B=B; this.C=C; } @Override protected Object clone(){ - return new Triangle((Vector3f)this.A.clone(),(Vector3f)this.B.clone(),(Vector3f)this.C.clone()); + return new Triangle((Vector)this.A.clone(),(Vector)this.B.clone(),(Vector)this.C.clone()); } @Override public String toString() { diff --git a/src/sig/Vector.java b/src/sig/Vector.java new file mode 100644 index 0000000..77c9c0f --- /dev/null +++ b/src/sig/Vector.java @@ -0,0 +1,17 @@ +package sig; + +public class Vector { + public float x,y,z; + Vector() { + this(0,0,0); + } + public Vector(float x,float y,float z) { + this.x=x; + this.y=y; + this.z=z; + } + @Override + protected Object clone(){ + return new Vector(x,y,z); + } +} diff --git a/src/sig/utils/GraphicsUtils.java b/src/sig/utils/GraphicsUtils.java new file mode 100644 index 0000000..acd2c4d --- /dev/null +++ b/src/sig/utils/GraphicsUtils.java @@ -0,0 +1,4 @@ +package sig.utils; + +public class GraphicsUtils { +} diff --git a/src/sig/utils/OBJReader.java b/src/sig/utils/OBJReader.java index cab5d2e..f385f4e 100644 --- a/src/sig/utils/OBJReader.java +++ b/src/sig/utils/OBJReader.java @@ -5,9 +5,8 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import javax.vecmath.Vector3f; - import sig.Triangle; +import sig.Vector; public class OBJReader { public static List ReadOBJFile(String f) { @@ -21,15 +20,15 @@ public class OBJReader { } else if (split[0].equalsIgnoreCase("f")) { tris.add(new Triangle( - new Vector3f( + new Vector( vertices.get(Integer.parseInt(split[1])-1)[0], vertices.get(Integer.parseInt(split[1])-1)[1], vertices.get(Integer.parseInt(split[1])-1)[2]), - new Vector3f( + new Vector( vertices.get(Integer.parseInt(split[2])-1)[0], vertices.get(Integer.parseInt(split[2])-1)[1], vertices.get(Integer.parseInt(split[2])-1)[2]), - new Vector3f( + new Vector( vertices.get(Integer.parseInt(split[3])-1)[0], vertices.get(Integer.parseInt(split[3])-1)[1], vertices.get(Integer.parseInt(split[3])-1)[2])));