Skip to content

Commit

Permalink
refs CesiumGS#7398: moved Matrix4.getRotation to Matrix4.getMatrix3
Browse files Browse the repository at this point in the history
  • Loading branch information
geoscan-builder committed May 13, 2019
1 parent ed7bd07 commit 698cc16
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 22 deletions.
2 changes: 1 addition & 1 deletion Source/Core/GeometryPipeline.js
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ define([

Matrix4.inverse(modelMatrix, inverseTranspose);
Matrix4.transpose(inverseTranspose, inverseTranspose);
Matrix4.getRotation(inverseTranspose, normalMatrix);
Matrix4.getMatrix3(inverseTranspose, normalMatrix);

transformVector(normalMatrix, attributes.normal);
transformVector(normalMatrix, attributes.tangent);
Expand Down
15 changes: 11 additions & 4 deletions Source/Core/Matrix4.js
Original file line number Diff line number Diff line change
Expand Up @@ -2149,6 +2149,13 @@ define([
return result;
};

/**
* @deprecated moved to Matrix4.getMatrix3
*/
Matrix4.getRotation = function(matrix, result) {
return Matrix4.getMatrix3(matrix, result);
}

/**
* Gets the upper left 3x3 rotation matrix of the provided matrix, assuming the matrix is a affine transformation matrix.
*
Expand All @@ -2165,13 +2172,13 @@ define([
* // [13.0, 17.0, 21.0, 25.0]
*
* var b = new Cesium.Matrix3();
* Cesium.Matrix4.getRotation(m,b);
* Cesium.Matrix4.getMatrix3(m,b);
*
* // b = [10.0, 14.0, 18.0]
* // [11.0, 15.0, 19.0]
* // [12.0, 16.0, 20.0]
*/
Matrix4.getRotation = function(matrix, result) {
Matrix4.getMatrix3 = function(matrix, result) {
//>>includeStart('debug', pragmas.debug);
Check.typeOf.object('matrix', matrix);
Check.typeOf.object('result', result);
Expand Down Expand Up @@ -2286,7 +2293,7 @@ define([
if (Math.abs(det) < CesiumMath.EPSILON21) {
// Special case for a zero scale matrix that can occur, for example,
// when a model's node has a [0, 0, 0] scale.
if (Matrix3.equalsEpsilon(Matrix4.getRotation(matrix, scratchInverseRotation), scratchMatrix3Zero, CesiumMath.EPSILON7) &&
if (Matrix3.equalsEpsilon(Matrix4.getMatrix3(matrix, scratchInverseRotation), scratchMatrix3Zero, CesiumMath.EPSILON7) &&
Cartesian4.equals(Matrix4.getRow(matrix, 3, scratchBottomRow), scratchExpectedBottomRow)) {

result[0] = 0.0;
Expand Down Expand Up @@ -2353,7 +2360,7 @@ define([
//>>includeEnd('debug');

//This function is an optimized version of the below 4 lines.
//var rT = Matrix3.transpose(Matrix4.getRotation(matrix));
//var rT = Matrix3.transpose(Matrix4.getMatrix3(matrix));
//var rTN = Matrix3.negate(rT);
//var rTT = Matrix3.multiplyByVector(rTN, Matrix4.getTranslation(matrix));
//return Matrix4.fromRotationTranslation(rT, rTT, result);
Expand Down
6 changes: 3 additions & 3 deletions Source/Core/Transforms.js
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ define([
//>>includeEnd('debug');

var transform = Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, scratchENUMatrix4);
var rotation = Matrix4.getRotation(transform, scratchHPRMatrix3);
var rotation = Matrix4.getMatrix3(transform, scratchHPRMatrix3);
return Quaternion.fromRotationMatrix(rotation, result);
};

Expand Down Expand Up @@ -421,7 +421,7 @@ define([
transformCopy = Matrix4.setTranslation(transformCopy, Cartesian3.ZERO, transformCopy);

toFixedFrame = Matrix4.multiply(toFixedFrame, transformCopy, toFixedFrame);
var quaternionRotation = Quaternion.fromRotationMatrix(Matrix4.getRotation(toFixedFrame, hprRotationScratch), hprQuaternionScratch);
var quaternionRotation = Quaternion.fromRotationMatrix(Matrix4.getMatrix3(toFixedFrame, hprRotationScratch), hprQuaternionScratch);
quaternionRotation = Quaternion.normalize(quaternionRotation, quaternionRotation);

return HeadingPitchRoll.fromQuaternion(quaternionRotation, result);
Expand Down Expand Up @@ -878,7 +878,7 @@ define([
// Assuming the instance are positioned in WGS84, invert the WGS84 transform to get the local transform and then convert to 2D
var fromENU = Transforms.eastNorthUpToFixedFrame(rtcCenter, ellipsoid, scratchFromENU);
var toENU = Matrix4.inverseTransformation(fromENU, scratchToENU);
var rotation = Matrix4.getRotation(matrix, scratchRotation);
var rotation = Matrix4.getMatrix3(matrix, scratchRotation);
var local = Matrix4.multiplyByMatrix3(toENU, rotation, result);
Matrix4.multiply(swizzleMatrix, local, result); // Swap x, y, z for 2D
Matrix4.setTranslation(result, projectedPosition, result); // Use the projected center
Expand Down
18 changes: 9 additions & 9 deletions Source/Renderer/UniformState.js
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ define([
if (this._inverseTransposeModelDirty) {
this._inverseTransposeModelDirty = false;

Matrix4.getRotation(this.inverseModel, m);
Matrix4.getMatrix3(this.inverseModel, m);
Matrix3.transpose(m, m);
}

Expand Down Expand Up @@ -967,7 +967,7 @@ define([

function setView(uniformState, matrix) {
Matrix4.clone(matrix, uniformState._view);
Matrix4.getRotation(matrix, uniformState._viewRotation);
Matrix4.getMatrix3(matrix, uniformState._viewRotation);

uniformState._view3DDirty = true;
uniformState._inverseView3DDirty = true;
Expand All @@ -989,7 +989,7 @@ define([

function setInverseView(uniformState, matrix) {
Matrix4.clone(matrix, uniformState._inverseView);
Matrix4.getRotation(matrix, uniformState._inverseViewRotation);
Matrix4.getMatrix3(matrix, uniformState._inverseViewRotation);
}

function setProjection(uniformState, matrix) {
Expand Down Expand Up @@ -1294,7 +1294,7 @@ define([
uniformState._normalDirty = false;

var m = uniformState._normal;
Matrix4.getRotation(uniformState.inverseModelView, m);
Matrix4.getMatrix3(uniformState.inverseModelView, m);
Matrix3.getRotation(m, m);
Matrix3.transpose(m, m);
}
Expand All @@ -1305,7 +1305,7 @@ define([
uniformState._normal3DDirty = false;

var m = uniformState._normal3D;
Matrix4.getRotation(uniformState.inverseModelView3D, m);
Matrix4.getMatrix3(uniformState.inverseModelView3D, m);
Matrix3.getRotation(m, m);
Matrix3.transpose(m, m);
}
Expand All @@ -1314,15 +1314,15 @@ define([
function cleanInverseNormal(uniformState) {
if (uniformState._inverseNormalDirty) {
uniformState._inverseNormalDirty = false;
Matrix4.getRotation(uniformState.inverseModelView, uniformState._inverseNormal);
Matrix4.getMatrix3(uniformState.inverseModelView, uniformState._inverseNormal);
Matrix3.getRotation(uniformState._inverseNormal, uniformState._inverseNormal);
}
}

function cleanInverseNormal3D(uniformState) {
if (uniformState._inverseNormal3DDirty) {
uniformState._inverseNormal3DDirty = false;
Matrix4.getRotation(uniformState.inverseModelView3D, uniformState._inverseNormal3D);
Matrix4.getMatrix3(uniformState.inverseModelView3D, uniformState._inverseNormal3D);
Matrix3.getRotation(uniformState._inverseNormal3D, uniformState._inverseNormal3D);
}
}
Expand Down Expand Up @@ -1426,15 +1426,15 @@ define([
} else {
view2Dto3D(that._cameraPosition, that._cameraDirection, that._cameraRight, that._cameraUp, that._frustum2DWidth, that._mode, that._mapProjection, that._view3D);
}
Matrix4.getRotation(that._view3D, that._viewRotation3D);
Matrix4.getMatrix3(that._view3D, that._viewRotation3D);
that._view3DDirty = false;
}
}

function updateInverseView3D(that){
if (that._inverseView3DDirty) {
Matrix4.inverseTransformation(that.view3D, that._inverseView3D);
Matrix4.getRotation(that._inverseView3D, that._inverseViewRotation3D);
Matrix4.getMatrix3(that._inverseView3D, that._inverseViewRotation3D);
that._inverseView3DDirty = false;
}
}
Expand Down
4 changes: 2 additions & 2 deletions Source/Scene/Cesium3DTile.js
Original file line number Diff line number Diff line change
Expand Up @@ -993,7 +993,7 @@ define([

// Find the transformed center and halfAxes
center = Matrix4.multiplyByPoint(transform, center, center);
var rotationScale = Matrix4.getRotation(transform, scratchMatrix);
var rotationScale = Matrix4.getMatrix3(transform, scratchMatrix);
halfAxes = Matrix3.multiply(rotationScale, halfAxes, halfAxes);

if (defined(result)) {
Expand All @@ -1017,7 +1017,7 @@ define([
// This is why the transform is calculated as the difference between the initial transform and the current transform.
transform = Matrix4.multiplyTransformation(transform, Matrix4.inverseTransformation(initialTransform, scratchTransform), scratchTransform);
center = Matrix4.multiplyByPoint(transform, center, center);
var rotationScale = Matrix4.getRotation(transform, scratchMatrix);
var rotationScale = Matrix4.getMatrix3(transform, scratchMatrix);
halfAxes = Matrix3.multiply(rotationScale, halfAxes, halfAxes);

if (defined(result) && (result instanceof TileOrientedBoundingBox)) {
Expand Down
2 changes: 1 addition & 1 deletion Source/Scene/Instanced3DModel3DTileContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ define([
hasCustomOrientation = true;
} else if (eastNorthUp) {
Transforms.eastNorthUpToFixedFrame(instancePosition, Ellipsoid.WGS84, instanceTransform);
Matrix4.getRotation(instanceTransform, instanceRotation);
Matrix4.getMatrix3(instanceTransform, instanceRotation);
} else {
Matrix3.clone(Matrix3.IDENTITY, instanceRotation);
}
Expand Down
4 changes: 2 additions & 2 deletions Source/Scene/Model.js
Original file line number Diff line number Diff line change
Expand Up @@ -2892,7 +2892,7 @@ define([
var mInverseTranspose = new Matrix3();
return function() {
Matrix4.inverse(runtimeNode.computedMatrix, mInverse);
Matrix4.getRotation(mInverse, mInverseTranspose);
Matrix4.getMatrix3(mInverse, mInverseTranspose);
return Matrix3.transpose(mInverseTranspose, mInverseTranspose);
};
},
Expand All @@ -2903,7 +2903,7 @@ define([
return function() {
Matrix4.multiplyTransformation(uniformState.view, runtimeNode.computedMatrix, mv);
Matrix4.inverse(mv, mvInverse);
Matrix4.getRotation(mvInverse, mvInverseTranspose);
Matrix4.getMatrix3(mvInverse, mvInverseTranspose);
return Matrix3.transpose(mvInverseTranspose, mvInverseTranspose);
};
},
Expand Down

0 comments on commit 698cc16

Please sign in to comment.