changeset 2:47399f2f3a80

commit
author Syusaku Morita <e105716@ie.u-ryukyu.ac.jp>
date Wed, 16 May 2012 17:53:54 +0900
parents 6b217e0f301c
children aa7abf13d3f5
files fps/fps.html fps/resources/J3DIMath.js
diffstat 2 files changed, 94 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/fps/fps.html	Tue May 15 13:32:56 2012 +0900
+++ b/fps/fps.html	Wed May 16 17:53:54 2012 +0900
@@ -135,13 +135,36 @@
 }
 
 
+function setCamera(ctx){
+	ctx.viewport(0, 0, width, height);
+
+    var t = width/height;
+
+    ctx.perspectiveMatrix.makeIdentity();
+    ctx.perspectiveMatrix.frustum(-0.5, 0.5, -0.5 / t, 0.5 / t, 1, 100000);
+
+    ctx.perspectiveMatrix.translate(-xPos,-yPos,-zPos);
+    ctx.perspectiveMatrix.rotate(xRool,0,1,0);
+
+	ctx.perspectiveMatrix.multiply(cameraMatrix);
+
+
+    cameraMatrix.translate(-xPos,-yPos,-zPos);
+    cameraMatrix.rotate(xRool,0,1,0);
+
+	if(countX < 10)
+		countX += 0.01;
+}
+
+countRool = 0;
+countX = 0;
+
 FILPCOUNT = 0;
 function loop(ctx, ortho)
 {
         ctx.clear(ctx.COLOR_BUFFER_BIT | ctx.DEPTH_BUFFER_BIT);	
 
-        ctx.perspectiveMatrix.rotate(xRool,0,1,0);
-        ctx.perspectiveMatrix.translate(-xPos,-yPos,-zPos);
+		setCamera(ctx);
 
         PutSpriteV(ctx, cube_X, cube_Y, cube_Z, 1, matrix, object);
         PutSpriteV(ctx, cube_X2, cube_Y2, cube_Z2, 1, matrix, object2);
@@ -176,6 +199,9 @@
         var ortho = {left:0, right:200, bottom:140, top:0}
         matrix = new J3DIMatrix4(); // global variable 
         matrix2 = new J3DIMatrix4(); // global variable 
+		cameraMatrix = new J3DIMatrix4(); // global variable 
+		cameraMatrix.makeIdentity();
+
 
         cube_X = 0; 
         cube_Y = 0;
--- a/fps/resources/J3DIMath.js	Tue May 15 13:32:56 2012 +0900
+++ b/fps/resources/J3DIMath.js	Wed May 16 17:53:54 2012 +0900
@@ -584,6 +584,72 @@
     this.$matrix.m44 = m44;
 }
 
+J3DIMatrix4.prototype.multiplyReverse = function(mat)
+{
+    if (J3DIHasCSSMatrix) {
+        this.$matrix = this.$matrix.multiply(mat.$matrix);
+        return;
+    }
+
+    var m11 = (this.$matrix.m11 * mat.$matrix.m11 + this.$matrix.m12 * mat.$matrix.m21
+               + this.$matrix.m13 * mat.$matrix.m31 + this.$matrix.m14 * mat.$matrix.m41);
+    var m12 = (this.$matrix.m11 * mat.$matrix.m12 + this.$matrix.m12 * mat.$matrix.m22
+               + this.$matrix.m13 * mat.$matrix.m32 + this.$matrix.m14 * mat.$matrix.m42);
+    var m13 = (this.$matrix.m11 * mat.$matrix.m13 + this.$matrix.m12 * mat.$matrix.m23
+               + this.$matrix.m13 * mat.$matrix.m33 + this.$matrix.m14 * mat.$matrix.m43);
+    var m14 = (this.$matrix.m11 * mat.$matrix.m14 + this.$matrix.m12 * mat.$matrix.m24
+               + this.$matrix.m13 * mat.$matrix.m34 + this.$matrix.m14 * mat.$matrix.m44);
+
+    var m21 = (this.$matrix.m21 * mat.$matrix.m11 + this.$matrix.m22 * mat.$matrix.m21
+               + this.$matrix.m23 * mat.$matrix.m31 + this.$matrix.m24 * mat.$matrix.m41);
+    var m22 = (this.$matrix.m21 * mat.$matrix.m12 + this.$matrix.m22 * mat.$matrix.m22
+               + this.$matrix.m23 * mat.$matrix.m32 + this.$matrix.m24 * mat.$matrix.m42);
+    var m23 = (this.$matrix.m21 * mat.$matrix.m13 + this.$matrix.m22 * mat.$matrix.m23
+               + this.$matrix.m23 * mat.$matrix.m33 + this.$matrix.m24 * mat.$matrix.m43);
+    var m24 = (this.$matrix.m21 * mat.$matrix.m14 + this.$matrix.m22 * mat.$matrix.m24
+               + this.$matrix.m23 * mat.$matrix.m34 + this.$matrix.m24 * mat.$matrix.m44);
+
+    var m31 = (this.$matrix.m31 * mat.$matrix.m11 + this.$matrix.m32 * mat.$matrix.m21
+               + this.$matrix.m33 * mat.$matrix.m31 + this.$matrix.m34 * mat.$matrix.m41);
+    var m32 = (this.$matrix.m31 * mat.$matrix.m12 + this.$matrix.m32 * mat.$matrix.m22
+               + this.$matrix.m33 * mat.$matrix.m32 + this.$matrix.m34 * mat.$matrix.m42);
+    var m33 = (this.$matrix.m31 * mat.$matrix.m13 + this.$matrix.m32 * mat.$matrix.m23
+               + this.$matrix.m33 * mat.$matrix.m33 + this.$matrix.m34 * mat.$matrix.m43);
+    var m34 = (this.$matrix.m31 * mat.$matrix.m14 + this.$matrix.m32 * mat.$matrix.m24
+               + this.$matrix.m33 * mat.$matrix.m34 + this.$matrix.m34 * mat.$matrix.m44);
+
+    var m41 = (this.$matrix.m41 * mat.$matrix.m11 + this.$matrix.m42 * mat.$matrix.m21
+               + this.$matrix.m43 * mat.$matrix.m31 + this.$matrix.m44 * mat.$matrix.m41);
+    var m42 = (this.$matrix.m41 * mat.$matrix.m12 + this.$matrix.m42 * mat.$matrix.m22
+               + this.$matrix.m43 * mat.$matrix.m32 + this.$matrix.m44 * mat.$matrix.m42);
+    var m43 = (this.$matrix.m41 * mat.$matrix.m13 + this.$matrix.m42 * mat.$matrix.m23
+               + this.$matrix.m43 * mat.$matrix.m33 + this.$matrix.m44 * mat.$matrix.m43);
+    var m44 = (this.$matrix.m41 * mat.$matrix.m14 + this.$matrix.m42 * mat.$matrix.m24
+               + this.$matrix.m43 * mat.$matrix.m34 + this.$matrix.m44 * mat.$matrix.m44);
+
+    this.$matrix.m11 = m11;
+    this.$matrix.m12 = m12;
+    this.$matrix.m13 = m13;
+    this.$matrix.m14 = m14;
+
+    this.$matrix.m21 = m21;
+    this.$matrix.m22 = m22;
+    this.$matrix.m23 = m23;
+    this.$matrix.m24 = m24;
+
+    this.$matrix.m31 = m31;
+    this.$matrix.m32 = m32;
+    this.$matrix.m33 = m33;
+    this.$matrix.m34 = m34;
+
+    this.$matrix.m41 = m41;
+    this.$matrix.m42 = m42;
+    this.$matrix.m43 = m43;
+    this.$matrix.m44 = m44;
+}
+
+
+
 J3DIMatrix4.prototype.divide = function(divisor)
 {
     this.$matrix.m11 /= divisor;