public double[][] getGlobalMatrix() { double[] myGlobalPosition = this.getGlobalPosition(); double[][] myGlobalTranslationMatrix = MathUtil.translationMatrix(myGlobalPosition); double myGlobalRotation = this.getGlobalRotation(); double[][] myGlobalRotationMatrix = MathUtil.rotationMatrix(myGlobalRotation); double myGlobalScale = this.getGlobalScale(); double[][] myGlobalScaleMatrix = MathUtil.scaleMatrix(myGlobalScale); double[][] m = MathUtil.getIdentity(); m = MathUtil.multiply(m, myGlobalTranslationMatrix); m = MathUtil.multiply(m, myGlobalRotationMatrix); m = MathUtil.multiply(m, myGlobalScaleMatrix); return m; }
public double[][] getInverseGlobalMatrix() { double[] globalPosition = this.getGlobalPosition(); double[] inverseTranslation = new double[2]; inverseTranslation[0] = -globalPosition[0]; inverseTranslation[1] = -globalPosition[1]; double[][] myInverseGlobalTranslationMatrix = MathUtil.translationMatrix(inverseTranslation); double myInverseRotation = -this.getGlobalRotation(); double[][] myInverseGlobalRotationMatrix = MathUtil.rotationMatrix(myInverseRotation); double myInverseScale = 1d / this.getGlobalScale(); double[][] myInverseGlobalScaleMatrix = MathUtil.scaleMatrix(myInverseScale); double[][] m = MathUtil.getIdentity(); m = MathUtil.multiply(m, myInverseGlobalScaleMatrix); m = MathUtil.multiply(m, myInverseGlobalRotationMatrix); m = MathUtil.multiply(m, myInverseGlobalTranslationMatrix); return m; }