提交 e82c1ccd 编写于 作者: I ide user ide_gero3

first update towards typedarray usage in matrices\n This was done with some...

first update towards typedarray usage in matrices\n This was done with some simple replaces it doesn't work yet
上级 189e6c89
......@@ -23,12 +23,12 @@ THREE.Frustum.prototype.setFromMatrix = function ( m ) {
var i, plane,
planes = this.planes;
planes[ 0 ].set( m.n41 - m.n11, m.n42 - m.n12, m.n43 - m.n13, m.n44 - m.n14 );
planes[ 1 ].set( m.n41 + m.n11, m.n42 + m.n12, m.n43 + m.n13, m.n44 + m.n14 );
planes[ 2 ].set( m.n41 + m.n21, m.n42 + m.n22, m.n43 + m.n23, m.n44 + m.n24 );
planes[ 3 ].set( m.n41 - m.n21, m.n42 - m.n22, m.n43 - m.n23, m.n44 - m.n24 );
planes[ 4 ].set( m.n41 - m.n31, m.n42 - m.n32, m.n43 - m.n33, m.n44 - m.n34 );
planes[ 5 ].set( m.n41 + m.n31, m.n42 + m.n32, m.n43 + m.n33, m.n44 + m.n34 );
planes[ 0 ].set( m.elements[3] - m.elements[0], m.elements[7] - m.elements[4], m.elements[11] - m.elements[8], m.elements[15] - m.elements[12] );
planes[ 1 ].set( m.elements[3] + m.elements[0], m.elements[7] + m.elements[4], m.elements[11] + m.elements[8], m.elements[15] + m.elements[12] );
planes[ 2 ].set( m.elements[3] + m.elements[1], m.elements[7] + m.elements[5], m.elements[11] + m.elements[9], m.elements[15] + m.elements[13] );
planes[ 3 ].set( m.elements[3] - m.elements[1], m.elements[7] - m.elements[5], m.elements[11] - m.elements[9], m.elements[15] - m.elements[13] );
planes[ 4 ].set( m.elements[3] - m.elements[2], m.elements[7] - m.elements[6], m.elements[11] - m.elements[10], m.elements[15] - m.elements[14] );
planes[ 5 ].set( m.elements[3] + m.elements[2], m.elements[7] + m.elements[6], m.elements[11] + m.elements[10], m.elements[15] + m.elements[14] );
for ( i = 0; i < 6; i ++ ) {
......@@ -49,7 +49,7 @@ THREE.Frustum.prototype.contains = function ( object ) {
for ( var i = 0; i < 6; i ++ ) {
distance = planes[ i ].x * matrix.n14 + planes[ i ].y * matrix.n24 + planes[ i ].z * matrix.n34 + planes[ i ].w;
distance = planes[ i ].x * matrix.elements[12] + planes[ i ].y * matrix.elements[13] + planes[ i ].z * matrix.elements[14] + planes[ i ].w;
if ( distance <= radius ) return false;
}
......
......@@ -17,17 +17,17 @@ THREE.Matrix3.prototype = {
// input: THREE.Matrix4
// ( based on http://code.google.com/p/webgl-mjs/ )
var a11 = matrix.n33 * matrix.n22 - matrix.n32 * matrix.n23;
var a21 = - matrix.n33 * matrix.n21 + matrix.n31 * matrix.n23;
var a31 = matrix.n32 * matrix.n21 - matrix.n31 * matrix.n22;
var a12 = - matrix.n33 * matrix.n12 + matrix.n32 * matrix.n13;
var a22 = matrix.n33 * matrix.n11 - matrix.n31 * matrix.n13;
var a32 = - matrix.n32 * matrix.n11 + matrix.n31 * matrix.n12;
var a13 = matrix.n23 * matrix.n12 - matrix.n22 * matrix.n13;
var a23 = - matrix.n23 * matrix.n11 + matrix.n21 * matrix.n13;
var a33 = matrix.n22 * matrix.n11 - matrix.n21 * matrix.n12;
var det = matrix.n11 * a11 + matrix.n21 * a12 + matrix.n31 * a13;
var a11 = matrix.elements[10] * matrix.elements[5] - matrix.elements[6] * matrix.elements[9];
var a21 = - matrix.elements[10] * matrix.elements[1] + matrix.elements[2] * matrix.elements[9];
var a31 = matrix.elements[6] * matrix.elements[1] - matrix.elements[2] * matrix.elements[5];
var a12 = - matrix.elements[10] * matrix.elements[4] + matrix.elements[6] * matrix.elements[8];
var a22 = matrix.elements[10] * matrix.elements[0] - matrix.elements[2] * matrix.elements[8];
var a32 = - matrix.elements[6] * matrix.elements[0] + matrix.elements[2] * matrix.elements[4];
var a13 = matrix.elements[9] * matrix.elements[4] - matrix.elements[5] * matrix.elements[8];
var a23 = - matrix.elements[9] * matrix.elements[0] + matrix.elements[1] * matrix.elements[8];
var a33 = matrix.elements[5] * matrix.elements[0] - matrix.elements[1] * matrix.elements[4];
var det = matrix.elements[0] * a11 + matrix.elements[1] * a12 + matrix.elements[2] * a13;
// no inverse
......
此差异已折叠。
......@@ -367,7 +367,7 @@ THREE.Projector = function() {
if ( object instanceof THREE.Particle ) {
_vector4.set( objectMatrixWorld.n14, objectMatrixWorld.n24, objectMatrixWorld.n34, 1 );
_vector4.set( objectMatrixWorld.elements[12], objectMatrixWorld.elements[13], objectMatrixWorld.elements[14], 1 );
_projScreenMatrix.multiplyVector4( _vector4 );
_vector4.z /= _vector4.w;
......@@ -381,8 +381,8 @@ THREE.Projector = function() {
_particle.rotation = object.rotation.z;
_particle.scale.x = object.scale.x * Math.abs( _particle.x - ( _vector4.x + camera.projectionMatrix.n11 ) / ( _vector4.w + camera.projectionMatrix.n14 ) );
_particle.scale.y = object.scale.y * Math.abs( _particle.y - ( _vector4.y + camera.projectionMatrix.n22 ) / ( _vector4.w + camera.projectionMatrix.n24 ) );
_particle.scale.x = object.scale.x * Math.abs( _particle.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
_particle.scale.y = object.scale.y * Math.abs( _particle.y - ( _vector4.y + camera.projectionMatrix.elements[5] ) / ( _vector4.w + camera.projectionMatrix.elements[13] ) );
_particle.material = object.material;
......
......@@ -92,13 +92,13 @@ THREE.Quaternion.prototype = {
}
var absQ = Math.pow( m.determinant(), 1.0 / 3.0 );
this.w = Math.sqrt( Math.max( 0, absQ + m.n11 + m.n22 + m.n33 ) ) / 2;
this.x = Math.sqrt( Math.max( 0, absQ + m.n11 - m.n22 - m.n33 ) ) / 2;
this.y = Math.sqrt( Math.max( 0, absQ - m.n11 + m.n22 - m.n33 ) ) / 2;
this.z = Math.sqrt( Math.max( 0, absQ - m.n11 - m.n22 + m.n33 ) ) / 2;
this.x = copySign( this.x, ( m.n32 - m.n23 ) );
this.y = copySign( this.y, ( m.n13 - m.n31 ) );
this.z = copySign( this.z, ( m.n21 - m.n12 ) );
this.w = Math.sqrt( Math.max( 0, absQ + m.elements[0] + m.elements[5] + m.elements[10] ) ) / 2;
this.x = Math.sqrt( Math.max( 0, absQ + m.elements[0] - m.elements[5] - m.elements[10] ) ) / 2;
this.y = Math.sqrt( Math.max( 0, absQ - m.elements[0] + m.elements[5] - m.elements[10] ) ) / 2;
this.z = Math.sqrt( Math.max( 0, absQ - m.elements[0] - m.elements[5] + m.elements[10] ) ) / 2;
this.x = copySign( this.x, ( m.elements[6] - m.elements[9] ) );
this.y = copySign( this.y, ( m.elements[8] - m.elements[2] ) );
this.z = copySign( this.z, ( m.elements[1] - m.elements[4] ) );
this.normalize();
return this;
......
......@@ -262,9 +262,9 @@ THREE.Vector3.prototype = {
getPositionFromMatrix: function ( m ) {
this.x = m.n14;
this.y = m.n24;
this.z = m.n34;
this.x = m.elements[12];
this.y = m.elements[13];
this.z = m.elements[14];
return this;
......@@ -276,9 +276,9 @@ THREE.Vector3.prototype = {
var sy = scale ? scale.y : 1;
var sz = scale ? scale.z : 1;
var m11 = m.n11 / sx, m12 = m.n12 / sy, m13 = m.n13 / sz;
var m21 = m.n21 / sx, m22 = m.n22 / sy, m23 = m.n23 / sz;
var m33 = m.n33 / sz;
var m11 = m.elements[0] / sx, m12 = m.elements[4] / sy, m13 = m.elements[8] / sz;
var m21 = m.elements[1] / sx, m22 = m.elements[5] / sy, m23 = m.elements[9] / sz;
var m33 = m.elements[10] / sz;
this.y = Math.asin( m13 );
......@@ -355,9 +355,9 @@ THREE.Vector3.prototype = {
getScaleFromMatrix: function ( m ) {
var sx = this.set( m.n11, m.n21, m.n31 ).length();
var sy = this.set( m.n12, m.n22, m.n32 ).length();
var sz = this.set( m.n13, m.n23, m.n33 ).length();
var sx = this.set( m.elements[0], m.elements[1], m.elements[2] ).length();
var sy = this.set( m.elements[4], m.elements[5], m.elements[6] ).length();
var sz = this.set( m.elements[8], m.elements[9], m.elements[10] ).length();
this.x = sx;
this.y = sy;
......
......@@ -89,15 +89,15 @@ THREE.RollControls = function ( object, domElement ) {
xTemp.cross( yTemp, zTemp ).normalize();
yTemp.cross( zTemp, xTemp ).normalize();
this.object.matrix.n11 = xTemp.x; this.object.matrix.n12 = yTemp.x; this.object.matrix.n13 = zTemp.x;
this.object.matrix.n21 = xTemp.y; this.object.matrix.n22 = yTemp.y; this.object.matrix.n23 = zTemp.y;
this.object.matrix.n31 = xTemp.z; this.object.matrix.n32 = yTemp.z; this.object.matrix.n33 = zTemp.z;
this.object.matrix.elements[0] = xTemp.x; this.object.matrix.elements[4] = yTemp.x; this.object.matrix.elements[8] = zTemp.x;
this.object.matrix.elements[1] = xTemp.y; this.object.matrix.elements[5] = yTemp.y; this.object.matrix.elements[9] = zTemp.y;
this.object.matrix.elements[2] = xTemp.z; this.object.matrix.elements[6] = yTemp.z; this.object.matrix.elements[10] = zTemp.z;
// calculate roll matrix
rollMatrix.identity();
rollMatrix.n11 = Math.cos( this.roll ); rollMatrix.n12 = -Math.sin( this.roll );
rollMatrix.n21 = Math.sin( this.roll ); rollMatrix.n22 = Math.cos( this.roll );
rollMatrix.elements[0] = Math.cos( this.roll ); rollMatrix.elements[4] = -Math.sin( this.roll );
rollMatrix.elements[1] = Math.sin( this.roll ); rollMatrix.elements[5] = Math.cos( this.roll );
// multiply camera with roll
......@@ -106,34 +106,34 @@ THREE.RollControls = function ( object, domElement ) {
// set position
this.object.matrix.n14 = this.object.position.x;
this.object.matrix.n24 = this.object.position.y;
this.object.matrix.n34 = this.object.position.z;
this.object.matrix.elements[12] = this.object.position.x;
this.object.matrix.elements[13] = this.object.position.y;
this.object.matrix.elements[14] = this.object.position.z;
};
this.translateX = function ( distance ) {
this.object.position.x += this.object.matrix.n11 * distance;
this.object.position.y += this.object.matrix.n21 * distance;
this.object.position.z += this.object.matrix.n31 * distance;
this.object.position.x += this.object.matrix.elements[0] * distance;
this.object.position.y += this.object.matrix.elements[1] * distance;
this.object.position.z += this.object.matrix.elements[2] * distance;
};
this.translateY = function ( distance ) {
this.object.position.x += this.object.matrix.n12 * distance;
this.object.position.y += this.object.matrix.n22 * distance;
this.object.position.z += this.object.matrix.n32 * distance;
this.object.position.x += this.object.matrix.elements[4] * distance;
this.object.position.y += this.object.matrix.elements[5] * distance;
this.object.position.z += this.object.matrix.elements[6] * distance;
};
this.translateZ = function ( distance ) {
this.object.position.x -= this.object.matrix.n13 * distance;
this.object.position.y -= this.object.matrix.n23 * distance;
this.object.position.z -= this.object.matrix.n33 * distance;
this.object.position.x -= this.object.matrix.elements[8] * distance;
this.object.position.y -= this.object.matrix.elements[9] * distance;
this.object.position.z -= this.object.matrix.elements[10] * distance;
};
......@@ -142,7 +142,7 @@ THREE.RollControls = function ( object, domElement ) {
// please note that the amount is NOT degrees, but a scale value
xTemp.set( this.object.matrix.n11, this.object.matrix.n21, this.object.matrix.n31 );
xTemp.set( this.object.matrix.elements[0], this.object.matrix.elements[1], this.object.matrix.elements[2] );
xTemp.multiplyScalar( amount );
this.forward.subSelf( xTemp );
......@@ -154,7 +154,7 @@ THREE.RollControls = function ( object, domElement ) {
// please note that the amount is NOT degrees, but a scale value
yTemp.set( this.object.matrix.n12, this.object.matrix.n22, this.object.matrix.n32 );
yTemp.set( this.object.matrix.elements[4], this.object.matrix.elements[5], this.object.matrix.elements[6] );
yTemp.multiplyScalar( amount );
this.forward.addSelf( yTemp );
......
......@@ -126,16 +126,16 @@ if ( THREE.WebGLRenderer ) {
// translate xOffset
eyeRight.n14 = eyeSep;
eyeLeft.n14 = -eyeSep;
eyeRight.elements[12] = eyeSep;
eyeLeft.elements[12] = -eyeSep;
// for left eye
xmin = -ymax * _aspect + eyeSepOnProjection;
xmax = ymax * _aspect + eyeSepOnProjection;
projectionMatrix.n11 = 2 * _near / ( xmax - xmin );
projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin );
projectionMatrix.elements[0] = 2 * _near / ( xmax - xmin );
projectionMatrix.elements[8] = ( xmax + xmin ) / ( xmax - xmin );
_cameraL.projectionMatrix.copy( projectionMatrix );
......@@ -144,8 +144,8 @@ if ( THREE.WebGLRenderer ) {
xmin = -ymax * _aspect - eyeSepOnProjection;
xmax = ymax * _aspect - eyeSepOnProjection;
projectionMatrix.n11 = 2 * _near / ( xmax - xmin );
projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin );
projectionMatrix.elements[0] = 2 * _near / ( xmax - xmin );
projectionMatrix.elements[8] = ( xmax + xmin ) / ( xmax - xmin );
_cameraR.projectionMatrix.copy( projectionMatrix );
......
......@@ -128,16 +128,16 @@ if ( THREE.WebGLRenderer ) {
// translate xOffset
eyeRight.n14 = eyeSep;
eyeLeft.n14 = -eyeSep;
eyeRight.elements[12] = eyeSep;
eyeLeft.elements[12] = -eyeSep;
// for left eye
xmin = -ymax * _aspect + eyeSepOnProjection;
xmax = ymax * _aspect + eyeSepOnProjection;
projectionMatrix.n11 = 2 * _near / ( xmax - xmin );
projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin );
projectionMatrix.elements[0] = 2 * _near / ( xmax - xmin );
projectionMatrix.elements[8] = ( xmax + xmin ) / ( xmax - xmin );
_cameraL.projectionMatrix.copy( projectionMatrix );
......@@ -146,8 +146,8 @@ if ( THREE.WebGLRenderer ) {
xmin = -ymax * _aspect - eyeSepOnProjection;
xmax = ymax * _aspect - eyeSepOnProjection;
projectionMatrix.n11 = 2 * _near / ( xmax - xmin );
projectionMatrix.n13 = ( xmax + xmin ) / ( xmax - xmin );
projectionMatrix.elements[0] = 2 * _near / ( xmax - xmin );
projectionMatrix.elements[8] = ( xmax + xmin ) / ( xmax - xmin );
_cameraR.projectionMatrix.copy( projectionMatrix );
......
......@@ -164,7 +164,7 @@ THREE.LensFlarePlugin = function ( ) {
flare = flares[ i ];
tempPosition.set( flare.matrixWorld.n14, flare.matrixWorld.n24, flare.matrixWorld.n34 );
tempPosition.set( flare.matrixWorld.elements[12], flare.matrixWorld.elements[13], flare.matrixWorld.elements[14] );
camera.matrixWorldInverse.multiplyVector3( tempPosition );
camera.projectionMatrix.multiplyVector3( tempPosition );
......
......@@ -130,7 +130,7 @@ THREE.SpritePlugin = function ( ) {
if( ! sprite.useScreenCoordinates ) {
sprite._modelViewMatrix.multiplyToArray( camera.matrixWorldInverse, sprite.matrixWorld, sprite._modelViewMatrixArray );
sprite.z = - sprite._modelViewMatrix.n34;
sprite.z = - sprite._modelViewMatrix.elements[14];
} else {
......
......@@ -48,7 +48,7 @@ THREE.LOD.prototype.update = function ( camera ) {
camera.matrixWorldInverse.getInverse( camera.matrixWorld );
var inverse = camera.matrixWorldInverse;
var distance = -( inverse.n31 * this.matrixWorld.n14 + inverse.n32 * this.matrixWorld.n24 + inverse.n33 * this.matrixWorld.n34 + inverse.n34 );
var distance = -( inverse.elements[2] * this.matrixWorld.elements[12] + inverse.elements[6] * this.matrixWorld.elements[13] + inverse.elements[10] * this.matrixWorld.elements[14] + inverse.elements[14] );
this.LODs[ 0 ].object3D.visible = true;
......
......@@ -544,16 +544,16 @@ THREE.CanvasRenderer = function ( parameters ) {
var cameraMatrix = camera.matrixWorldInverse;
_vector3.copy( element.vertexNormalsWorld[ uv1 ] );
_uv1x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
_uv1y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
_uv1x = ( _vector3.x * cameraMatrix.elements[0] + _vector3.y * cameraMatrix.elements[4] + _vector3.z * cameraMatrix.elements[8] ) * 0.5 + 0.5;
_uv1y = - ( _vector3.x * cameraMatrix.elements[1] + _vector3.y * cameraMatrix.elements[5] + _vector3.z * cameraMatrix.elements[9] ) * 0.5 + 0.5;
_vector3.copy( element.vertexNormalsWorld[ uv2 ] );
_uv2x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
_uv2y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
_uv2x = ( _vector3.x * cameraMatrix.elements[0] + _vector3.y * cameraMatrix.elements[4] + _vector3.z * cameraMatrix.elements[8] ) * 0.5 + 0.5;
_uv2y = - ( _vector3.x * cameraMatrix.elements[1] + _vector3.y * cameraMatrix.elements[5] + _vector3.z * cameraMatrix.elements[9] ) * 0.5 + 0.5;
_vector3.copy( element.vertexNormalsWorld[ uv3 ] );
_uv3x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
_uv3y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
_uv3x = ( _vector3.x * cameraMatrix.elements[0] + _vector3.y * cameraMatrix.elements[4] + _vector3.z * cameraMatrix.elements[8] ) * 0.5 + 0.5;
_uv3y = - ( _vector3.x * cameraMatrix.elements[1] + _vector3.y * cameraMatrix.elements[5] + _vector3.z * cameraMatrix.elements[9] ) * 0.5 + 0.5;
patternPath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _uv1x, _uv1y, _uv2x, _uv2y, _uv3x, _uv3y, material.envMap );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册