# HG changeset patch # User Syusaku Morita # Date 1337158434 -32400 # Node ID 47399f2f3a80940fdcc686491a599409df083379 # Parent 6b217e0f301cf2403aa70253099d57a3e47bc036 commit diff -r 6b217e0f301c -r 47399f2f3a80 fps/fps.html --- 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; diff -r 6b217e0f301c -r 47399f2f3a80 fps/resources/J3DIMath.js --- 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;