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;
  }