home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / ext / vecmath.jar / javax / vecmath / Matrix4d.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-19  |  41.1 KB  |  2,351 lines

  1. package javax.vecmath;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Matrix4d implements Serializable, Cloneable {
  6.    static final long serialVersionUID = 8223903484171633710L;
  7.    public double m00;
  8.    public double m01;
  9.    public double m02;
  10.    public double m03;
  11.    public double m10;
  12.    public double m11;
  13.    public double m12;
  14.    public double m13;
  15.    public double m20;
  16.    public double m21;
  17.    public double m22;
  18.    public double m23;
  19.    public double m30;
  20.    public double m31;
  21.    public double m32;
  22.    public double m33;
  23.    private static final double EPS = 1.0E-10;
  24.  
  25.    public Matrix4d(double var1, double var3, double var5, double var7, double var9, double var11, double var13, double var15, double var17, double var19, double var21, double var23, double var25, double var27, double var29, double var31) {
  26.       this.m00 = var1;
  27.       this.m01 = var3;
  28.       this.m02 = var5;
  29.       this.m03 = var7;
  30.       this.m10 = var9;
  31.       this.m11 = var11;
  32.       this.m12 = var13;
  33.       this.m13 = var15;
  34.       this.m20 = var17;
  35.       this.m21 = var19;
  36.       this.m22 = var21;
  37.       this.m23 = var23;
  38.       this.m30 = var25;
  39.       this.m31 = var27;
  40.       this.m32 = var29;
  41.       this.m33 = var31;
  42.    }
  43.  
  44.    public Matrix4d(double[] var1) {
  45.       this.m00 = var1[0];
  46.       this.m01 = var1[1];
  47.       this.m02 = var1[2];
  48.       this.m03 = var1[3];
  49.       this.m10 = var1[4];
  50.       this.m11 = var1[5];
  51.       this.m12 = var1[6];
  52.       this.m13 = var1[7];
  53.       this.m20 = var1[8];
  54.       this.m21 = var1[9];
  55.       this.m22 = var1[10];
  56.       this.m23 = var1[11];
  57.       this.m30 = var1[12];
  58.       this.m31 = var1[13];
  59.       this.m32 = var1[14];
  60.       this.m33 = var1[15];
  61.    }
  62.  
  63.    public Matrix4d(Quat4d var1, Vector3d var2, double var3) {
  64.       this.m00 = var3 * ((double)1.0F - (double)2.0F * var1.y * var1.y - (double)2.0F * var1.z * var1.z);
  65.       this.m10 = var3 * (double)2.0F * (var1.x * var1.y + var1.w * var1.z);
  66.       this.m20 = var3 * (double)2.0F * (var1.x * var1.z - var1.w * var1.y);
  67.       this.m01 = var3 * (double)2.0F * (var1.x * var1.y - var1.w * var1.z);
  68.       this.m11 = var3 * ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.z * var1.z);
  69.       this.m21 = var3 * (double)2.0F * (var1.y * var1.z + var1.w * var1.x);
  70.       this.m02 = var3 * (double)2.0F * (var1.x * var1.z + var1.w * var1.y);
  71.       this.m12 = var3 * (double)2.0F * (var1.y * var1.z - var1.w * var1.x);
  72.       this.m22 = var3 * ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.y * var1.y);
  73.       this.m03 = var2.x;
  74.       this.m13 = var2.y;
  75.       this.m23 = var2.z;
  76.       this.m30 = (double)0.0F;
  77.       this.m31 = (double)0.0F;
  78.       this.m32 = (double)0.0F;
  79.       this.m33 = (double)1.0F;
  80.    }
  81.  
  82.    public Matrix4d(Quat4f var1, Vector3d var2, double var3) {
  83.       this.m00 = var3 * ((double)1.0F - (double)2.0F * (double)var1.y * (double)var1.y - (double)2.0F * (double)var1.z * (double)var1.z);
  84.       this.m10 = var3 * (double)2.0F * (double)(var1.x * var1.y + var1.w * var1.z);
  85.       this.m20 = var3 * (double)2.0F * (double)(var1.x * var1.z - var1.w * var1.y);
  86.       this.m01 = var3 * (double)2.0F * (double)(var1.x * var1.y - var1.w * var1.z);
  87.       this.m11 = var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.z * (double)var1.z);
  88.       this.m21 = var3 * (double)2.0F * (double)(var1.y * var1.z + var1.w * var1.x);
  89.       this.m02 = var3 * (double)2.0F * (double)(var1.x * var1.z + var1.w * var1.y);
  90.       this.m12 = var3 * (double)2.0F * (double)(var1.y * var1.z - var1.w * var1.x);
  91.       this.m22 = var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.y * (double)var1.y);
  92.       this.m03 = var2.x;
  93.       this.m13 = var2.y;
  94.       this.m23 = var2.z;
  95.       this.m30 = (double)0.0F;
  96.       this.m31 = (double)0.0F;
  97.       this.m32 = (double)0.0F;
  98.       this.m33 = (double)1.0F;
  99.    }
  100.  
  101.    public Matrix4d(Matrix4d var1) {
  102.       this.m00 = var1.m00;
  103.       this.m01 = var1.m01;
  104.       this.m02 = var1.m02;
  105.       this.m03 = var1.m03;
  106.       this.m10 = var1.m10;
  107.       this.m11 = var1.m11;
  108.       this.m12 = var1.m12;
  109.       this.m13 = var1.m13;
  110.       this.m20 = var1.m20;
  111.       this.m21 = var1.m21;
  112.       this.m22 = var1.m22;
  113.       this.m23 = var1.m23;
  114.       this.m30 = var1.m30;
  115.       this.m31 = var1.m31;
  116.       this.m32 = var1.m32;
  117.       this.m33 = var1.m33;
  118.    }
  119.  
  120.    public Matrix4d(Matrix4f var1) {
  121.       this.m00 = (double)var1.m00;
  122.       this.m01 = (double)var1.m01;
  123.       this.m02 = (double)var1.m02;
  124.       this.m03 = (double)var1.m03;
  125.       this.m10 = (double)var1.m10;
  126.       this.m11 = (double)var1.m11;
  127.       this.m12 = (double)var1.m12;
  128.       this.m13 = (double)var1.m13;
  129.       this.m20 = (double)var1.m20;
  130.       this.m21 = (double)var1.m21;
  131.       this.m22 = (double)var1.m22;
  132.       this.m23 = (double)var1.m23;
  133.       this.m30 = (double)var1.m30;
  134.       this.m31 = (double)var1.m31;
  135.       this.m32 = (double)var1.m32;
  136.       this.m33 = (double)var1.m33;
  137.    }
  138.  
  139.    public Matrix4d(Matrix3f var1, Vector3d var2, double var3) {
  140.       this.m00 = (double)var1.m00 * var3;
  141.       this.m01 = (double)var1.m01 * var3;
  142.       this.m02 = (double)var1.m02 * var3;
  143.       this.m03 = var2.x;
  144.       this.m10 = (double)var1.m10 * var3;
  145.       this.m11 = (double)var1.m11 * var3;
  146.       this.m12 = (double)var1.m12 * var3;
  147.       this.m13 = var2.y;
  148.       this.m20 = (double)var1.m20 * var3;
  149.       this.m21 = (double)var1.m21 * var3;
  150.       this.m22 = (double)var1.m22 * var3;
  151.       this.m23 = var2.z;
  152.       this.m30 = (double)0.0F;
  153.       this.m31 = (double)0.0F;
  154.       this.m32 = (double)0.0F;
  155.       this.m33 = (double)1.0F;
  156.    }
  157.  
  158.    public Matrix4d(Matrix3d var1, Vector3d var2, double var3) {
  159.       this.m00 = var1.m00 * var3;
  160.       this.m01 = var1.m01 * var3;
  161.       this.m02 = var1.m02 * var3;
  162.       this.m03 = var2.x;
  163.       this.m10 = var1.m10 * var3;
  164.       this.m11 = var1.m11 * var3;
  165.       this.m12 = var1.m12 * var3;
  166.       this.m13 = var2.y;
  167.       this.m20 = var1.m20 * var3;
  168.       this.m21 = var1.m21 * var3;
  169.       this.m22 = var1.m22 * var3;
  170.       this.m23 = var2.z;
  171.       this.m30 = (double)0.0F;
  172.       this.m31 = (double)0.0F;
  173.       this.m32 = (double)0.0F;
  174.       this.m33 = (double)1.0F;
  175.    }
  176.  
  177.    public Matrix4d() {
  178.       this.m00 = (double)0.0F;
  179.       this.m01 = (double)0.0F;
  180.       this.m02 = (double)0.0F;
  181.       this.m03 = (double)0.0F;
  182.       this.m10 = (double)0.0F;
  183.       this.m11 = (double)0.0F;
  184.       this.m12 = (double)0.0F;
  185.       this.m13 = (double)0.0F;
  186.       this.m20 = (double)0.0F;
  187.       this.m21 = (double)0.0F;
  188.       this.m22 = (double)0.0F;
  189.       this.m23 = (double)0.0F;
  190.       this.m30 = (double)0.0F;
  191.       this.m31 = (double)0.0F;
  192.       this.m32 = (double)0.0F;
  193.       this.m33 = (double)0.0F;
  194.    }
  195.  
  196.    public String toString() {
  197.       return this.m00 + ", " + this.m01 + ", " + this.m02 + ", " + this.m03 + "\n" + this.m10 + ", " + this.m11 + ", " + this.m12 + ", " + this.m13 + "\n" + this.m20 + ", " + this.m21 + ", " + this.m22 + ", " + this.m23 + "\n" + this.m30 + ", " + this.m31 + ", " + this.m32 + ", " + this.m33 + "\n";
  198.    }
  199.  
  200.    public final void setIdentity() {
  201.       this.m00 = (double)1.0F;
  202.       this.m01 = (double)0.0F;
  203.       this.m02 = (double)0.0F;
  204.       this.m03 = (double)0.0F;
  205.       this.m10 = (double)0.0F;
  206.       this.m11 = (double)1.0F;
  207.       this.m12 = (double)0.0F;
  208.       this.m13 = (double)0.0F;
  209.       this.m20 = (double)0.0F;
  210.       this.m21 = (double)0.0F;
  211.       this.m22 = (double)1.0F;
  212.       this.m23 = (double)0.0F;
  213.       this.m30 = (double)0.0F;
  214.       this.m31 = (double)0.0F;
  215.       this.m32 = (double)0.0F;
  216.       this.m33 = (double)1.0F;
  217.    }
  218.  
  219.    public final void setElement(int var1, int var2, double var3) {
  220.       switch (var1) {
  221.          case 0:
  222.             switch (var2) {
  223.                case 0:
  224.                   this.m00 = var3;
  225.                   return;
  226.                case 1:
  227.                   this.m01 = var3;
  228.                   return;
  229.                case 2:
  230.                   this.m02 = var3;
  231.                   return;
  232.                case 3:
  233.                   this.m03 = var3;
  234.                   return;
  235.                default:
  236.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d0"));
  237.             }
  238.          case 1:
  239.             switch (var2) {
  240.                case 0:
  241.                   this.m10 = var3;
  242.                   return;
  243.                case 1:
  244.                   this.m11 = var3;
  245.                   return;
  246.                case 2:
  247.                   this.m12 = var3;
  248.                   return;
  249.                case 3:
  250.                   this.m13 = var3;
  251.                   return;
  252.                default:
  253.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d0"));
  254.             }
  255.          case 2:
  256.             switch (var2) {
  257.                case 0:
  258.                   this.m20 = var3;
  259.                   return;
  260.                case 1:
  261.                   this.m21 = var3;
  262.                   return;
  263.                case 2:
  264.                   this.m22 = var3;
  265.                   return;
  266.                case 3:
  267.                   this.m23 = var3;
  268.                   return;
  269.                default:
  270.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d0"));
  271.             }
  272.          case 3:
  273.             switch (var2) {
  274.                case 0:
  275.                   this.m30 = var3;
  276.                   return;
  277.                case 1:
  278.                   this.m31 = var3;
  279.                   return;
  280.                case 2:
  281.                   this.m32 = var3;
  282.                   return;
  283.                case 3:
  284.                   this.m33 = var3;
  285.                   return;
  286.                default:
  287.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d0"));
  288.             }
  289.          default:
  290.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d0"));
  291.       }
  292.    }
  293.  
  294.    public final double getElement(int var1, int var2) {
  295.       switch (var1) {
  296.          case 0:
  297.             switch (var2) {
  298.                case 0:
  299.                   return this.m00;
  300.                case 1:
  301.                   return this.m01;
  302.                case 2:
  303.                   return this.m02;
  304.                case 3:
  305.                   return this.m03;
  306.                default:
  307.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d1"));
  308.             }
  309.          case 1:
  310.             switch (var2) {
  311.                case 0:
  312.                   return this.m10;
  313.                case 1:
  314.                   return this.m11;
  315.                case 2:
  316.                   return this.m12;
  317.                case 3:
  318.                   return this.m13;
  319.                default:
  320.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d1"));
  321.             }
  322.          case 2:
  323.             switch (var2) {
  324.                case 0:
  325.                   return this.m20;
  326.                case 1:
  327.                   return this.m21;
  328.                case 2:
  329.                   return this.m22;
  330.                case 3:
  331.                   return this.m23;
  332.                default:
  333.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d1"));
  334.             }
  335.          case 3:
  336.             switch (var2) {
  337.                case 0:
  338.                   return this.m30;
  339.                case 1:
  340.                   return this.m31;
  341.                case 2:
  342.                   return this.m32;
  343.                case 3:
  344.                   return this.m33;
  345.             }
  346.       }
  347.  
  348.       throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d1"));
  349.    }
  350.  
  351.    public final void getRow(int var1, Vector4d var2) {
  352.       if (var1 == 0) {
  353.          var2.x = this.m00;
  354.          var2.y = this.m01;
  355.          var2.z = this.m02;
  356.          var2.w = this.m03;
  357.       } else if (var1 == 1) {
  358.          var2.x = this.m10;
  359.          var2.y = this.m11;
  360.          var2.z = this.m12;
  361.          var2.w = this.m13;
  362.       } else if (var1 == 2) {
  363.          var2.x = this.m20;
  364.          var2.y = this.m21;
  365.          var2.z = this.m22;
  366.          var2.w = this.m23;
  367.       } else {
  368.          if (var1 != 3) {
  369.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d2"));
  370.          }
  371.  
  372.          var2.x = this.m30;
  373.          var2.y = this.m31;
  374.          var2.z = this.m32;
  375.          var2.w = this.m33;
  376.       }
  377.  
  378.    }
  379.  
  380.    public final void getRow(int var1, double[] var2) {
  381.       if (var1 == 0) {
  382.          var2[0] = this.m00;
  383.          var2[1] = this.m01;
  384.          var2[2] = this.m02;
  385.          var2[3] = this.m03;
  386.       } else if (var1 == 1) {
  387.          var2[0] = this.m10;
  388.          var2[1] = this.m11;
  389.          var2[2] = this.m12;
  390.          var2[3] = this.m13;
  391.       } else if (var1 == 2) {
  392.          var2[0] = this.m20;
  393.          var2[1] = this.m21;
  394.          var2[2] = this.m22;
  395.          var2[3] = this.m23;
  396.       } else {
  397.          if (var1 != 3) {
  398.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d2"));
  399.          }
  400.  
  401.          var2[0] = this.m30;
  402.          var2[1] = this.m31;
  403.          var2[2] = this.m32;
  404.          var2[3] = this.m33;
  405.       }
  406.  
  407.    }
  408.  
  409.    public final void getColumn(int var1, Vector4d var2) {
  410.       if (var1 == 0) {
  411.          var2.x = this.m00;
  412.          var2.y = this.m10;
  413.          var2.z = this.m20;
  414.          var2.w = this.m30;
  415.       } else if (var1 == 1) {
  416.          var2.x = this.m01;
  417.          var2.y = this.m11;
  418.          var2.z = this.m21;
  419.          var2.w = this.m31;
  420.       } else if (var1 == 2) {
  421.          var2.x = this.m02;
  422.          var2.y = this.m12;
  423.          var2.z = this.m22;
  424.          var2.w = this.m32;
  425.       } else {
  426.          if (var1 != 3) {
  427.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d3"));
  428.          }
  429.  
  430.          var2.x = this.m03;
  431.          var2.y = this.m13;
  432.          var2.z = this.m23;
  433.          var2.w = this.m33;
  434.       }
  435.  
  436.    }
  437.  
  438.    public final void getColumn(int var1, double[] var2) {
  439.       if (var1 == 0) {
  440.          var2[0] = this.m00;
  441.          var2[1] = this.m10;
  442.          var2[2] = this.m20;
  443.          var2[3] = this.m30;
  444.       } else if (var1 == 1) {
  445.          var2[0] = this.m01;
  446.          var2[1] = this.m11;
  447.          var2[2] = this.m21;
  448.          var2[3] = this.m31;
  449.       } else if (var1 == 2) {
  450.          var2[0] = this.m02;
  451.          var2[1] = this.m12;
  452.          var2[2] = this.m22;
  453.          var2[3] = this.m32;
  454.       } else {
  455.          if (var1 != 3) {
  456.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d3"));
  457.          }
  458.  
  459.          var2[0] = this.m03;
  460.          var2[1] = this.m13;
  461.          var2[2] = this.m23;
  462.          var2[3] = this.m33;
  463.       }
  464.  
  465.    }
  466.  
  467.    public final void get(Matrix3d var1) {
  468.       double[] var2 = new double[9];
  469.       double[] var3 = new double[3];
  470.       this.getScaleRotate(var3, var2);
  471.       var1.m00 = var2[0];
  472.       var1.m01 = var2[1];
  473.       var1.m02 = var2[2];
  474.       var1.m10 = var2[3];
  475.       var1.m11 = var2[4];
  476.       var1.m12 = var2[5];
  477.       var1.m20 = var2[6];
  478.       var1.m21 = var2[7];
  479.       var1.m22 = var2[8];
  480.    }
  481.  
  482.    public final void get(Matrix3f var1) {
  483.       double[] var2 = new double[9];
  484.       double[] var3 = new double[3];
  485.       this.getScaleRotate(var3, var2);
  486.       var1.m00 = (float)var2[0];
  487.       var1.m01 = (float)var2[1];
  488.       var1.m02 = (float)var2[2];
  489.       var1.m10 = (float)var2[3];
  490.       var1.m11 = (float)var2[4];
  491.       var1.m12 = (float)var2[5];
  492.       var1.m20 = (float)var2[6];
  493.       var1.m21 = (float)var2[7];
  494.       var1.m22 = (float)var2[8];
  495.    }
  496.  
  497.    public final double get(Matrix3d var1, Vector3d var2) {
  498.       double[] var3 = new double[9];
  499.       double[] var4 = new double[3];
  500.       this.getScaleRotate(var4, var3);
  501.       var1.m00 = var3[0];
  502.       var1.m01 = var3[1];
  503.       var1.m02 = var3[2];
  504.       var1.m10 = var3[3];
  505.       var1.m11 = var3[4];
  506.       var1.m12 = var3[5];
  507.       var1.m20 = var3[6];
  508.       var1.m21 = var3[7];
  509.       var1.m22 = var3[8];
  510.       var2.x = this.m03;
  511.       var2.y = this.m13;
  512.       var2.z = this.m23;
  513.       return Matrix3d.max3(var4);
  514.    }
  515.  
  516.    public final double get(Matrix3f var1, Vector3d var2) {
  517.       double[] var3 = new double[9];
  518.       double[] var4 = new double[3];
  519.       this.getScaleRotate(var4, var3);
  520.       var1.m00 = (float)var3[0];
  521.       var1.m01 = (float)var3[1];
  522.       var1.m02 = (float)var3[2];
  523.       var1.m10 = (float)var3[3];
  524.       var1.m11 = (float)var3[4];
  525.       var1.m12 = (float)var3[5];
  526.       var1.m20 = (float)var3[6];
  527.       var1.m21 = (float)var3[7];
  528.       var1.m22 = (float)var3[8];
  529.       var2.x = this.m03;
  530.       var2.y = this.m13;
  531.       var2.z = this.m23;
  532.       return Matrix3d.max3(var4);
  533.    }
  534.  
  535.    public final void get(Quat4f var1) {
  536.       double[] var2 = new double[9];
  537.       double[] var3 = new double[3];
  538.       this.getScaleRotate(var3, var2);
  539.       double var4 = (double)0.25F * ((double)1.0F + var2[0] + var2[4] + var2[8]);
  540.       if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  541.          var1.w = (float)Math.sqrt(var4);
  542.          var4 = (double)0.25F / (double)var1.w;
  543.          var1.x = (float)((var2[7] - var2[5]) * var4);
  544.          var1.y = (float)((var2[2] - var2[6]) * var4);
  545.          var1.z = (float)((var2[3] - var2[1]) * var4);
  546.       } else {
  547.          var1.w = 0.0F;
  548.          var4 = (double)-0.5F * (var2[4] + var2[8]);
  549.          if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  550.             var1.x = (float)Math.sqrt(var4);
  551.             var4 = (double)0.5F / (double)var1.x;
  552.             var1.y = (float)(var2[3] * var4);
  553.             var1.z = (float)(var2[6] * var4);
  554.          } else {
  555.             var1.x = 0.0F;
  556.             var4 = (double)0.5F * ((double)1.0F - var2[8]);
  557.             if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  558.                var1.y = (float)Math.sqrt(var4);
  559.                var1.z = (float)(var2[7] / ((double)2.0F * (double)var1.y));
  560.             } else {
  561.                var1.y = 0.0F;
  562.                var1.z = 1.0F;
  563.             }
  564.          }
  565.       }
  566.    }
  567.  
  568.    public final void get(Quat4d var1) {
  569.       double[] var2 = new double[9];
  570.       double[] var3 = new double[3];
  571.       this.getScaleRotate(var3, var2);
  572.       double var4 = (double)0.25F * ((double)1.0F + var2[0] + var2[4] + var2[8]);
  573.       if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  574.          var1.w = Math.sqrt(var4);
  575.          var4 = (double)0.25F / var1.w;
  576.          var1.x = (var2[7] - var2[5]) * var4;
  577.          var1.y = (var2[2] - var2[6]) * var4;
  578.          var1.z = (var2[3] - var2[1]) * var4;
  579.       } else {
  580.          var1.w = (double)0.0F;
  581.          var4 = (double)-0.5F * (var2[4] + var2[8]);
  582.          if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  583.             var1.x = Math.sqrt(var4);
  584.             var4 = (double)0.5F / var1.x;
  585.             var1.y = var2[3] * var4;
  586.             var1.z = var2[6] * var4;
  587.          } else {
  588.             var1.x = (double)0.0F;
  589.             var4 = (double)0.5F * ((double)1.0F - var2[8]);
  590.             if (!((var4 < (double)0.0F ? -var4 : var4) < 1.0E-30)) {
  591.                var1.y = Math.sqrt(var4);
  592.                var1.z = var2[7] / ((double)2.0F * var1.y);
  593.             } else {
  594.                var1.y = (double)0.0F;
  595.                var1.z = (double)1.0F;
  596.             }
  597.          }
  598.       }
  599.    }
  600.  
  601.    public final void get(Vector3d var1) {
  602.       var1.x = this.m03;
  603.       var1.y = this.m13;
  604.       var1.z = this.m23;
  605.    }
  606.  
  607.    public final void getRotationScale(Matrix3f var1) {
  608.       var1.m00 = (float)this.m00;
  609.       var1.m01 = (float)this.m01;
  610.       var1.m02 = (float)this.m02;
  611.       var1.m10 = (float)this.m10;
  612.       var1.m11 = (float)this.m11;
  613.       var1.m12 = (float)this.m12;
  614.       var1.m20 = (float)this.m20;
  615.       var1.m21 = (float)this.m21;
  616.       var1.m22 = (float)this.m22;
  617.    }
  618.  
  619.    public final void getRotationScale(Matrix3d var1) {
  620.       var1.m00 = this.m00;
  621.       var1.m01 = this.m01;
  622.       var1.m02 = this.m02;
  623.       var1.m10 = this.m10;
  624.       var1.m11 = this.m11;
  625.       var1.m12 = this.m12;
  626.       var1.m20 = this.m20;
  627.       var1.m21 = this.m21;
  628.       var1.m22 = this.m22;
  629.    }
  630.  
  631.    public final double getScale() {
  632.       double[] var1 = new double[9];
  633.       double[] var2 = new double[3];
  634.       this.getScaleRotate(var2, var1);
  635.       return Matrix3d.max3(var2);
  636.    }
  637.  
  638.    public final void setRotationScale(Matrix3d var1) {
  639.       this.m00 = var1.m00;
  640.       this.m01 = var1.m01;
  641.       this.m02 = var1.m02;
  642.       this.m10 = var1.m10;
  643.       this.m11 = var1.m11;
  644.       this.m12 = var1.m12;
  645.       this.m20 = var1.m20;
  646.       this.m21 = var1.m21;
  647.       this.m22 = var1.m22;
  648.    }
  649.  
  650.    public final void setRotationScale(Matrix3f var1) {
  651.       this.m00 = (double)var1.m00;
  652.       this.m01 = (double)var1.m01;
  653.       this.m02 = (double)var1.m02;
  654.       this.m10 = (double)var1.m10;
  655.       this.m11 = (double)var1.m11;
  656.       this.m12 = (double)var1.m12;
  657.       this.m20 = (double)var1.m20;
  658.       this.m21 = (double)var1.m21;
  659.       this.m22 = (double)var1.m22;
  660.    }
  661.  
  662.    public final void setScale(double var1) {
  663.       double[] var3 = new double[9];
  664.       double[] var4 = new double[3];
  665.       this.getScaleRotate(var4, var3);
  666.       this.m00 = var3[0] * var1;
  667.       this.m01 = var3[1] * var1;
  668.       this.m02 = var3[2] * var1;
  669.       this.m10 = var3[3] * var1;
  670.       this.m11 = var3[4] * var1;
  671.       this.m12 = var3[5] * var1;
  672.       this.m20 = var3[6] * var1;
  673.       this.m21 = var3[7] * var1;
  674.       this.m22 = var3[8] * var1;
  675.    }
  676.  
  677.    public final void setRow(int var1, double var2, double var4, double var6, double var8) {
  678.       switch (var1) {
  679.          case 0:
  680.             this.m00 = var2;
  681.             this.m01 = var4;
  682.             this.m02 = var6;
  683.             this.m03 = var8;
  684.             break;
  685.          case 1:
  686.             this.m10 = var2;
  687.             this.m11 = var4;
  688.             this.m12 = var6;
  689.             this.m13 = var8;
  690.             break;
  691.          case 2:
  692.             this.m20 = var2;
  693.             this.m21 = var4;
  694.             this.m22 = var6;
  695.             this.m23 = var8;
  696.             break;
  697.          case 3:
  698.             this.m30 = var2;
  699.             this.m31 = var4;
  700.             this.m32 = var6;
  701.             this.m33 = var8;
  702.             break;
  703.          default:
  704.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d4"));
  705.       }
  706.  
  707.    }
  708.  
  709.    public final void setRow(int var1, Vector4d var2) {
  710.       switch (var1) {
  711.          case 0:
  712.             this.m00 = var2.x;
  713.             this.m01 = var2.y;
  714.             this.m02 = var2.z;
  715.             this.m03 = var2.w;
  716.             break;
  717.          case 1:
  718.             this.m10 = var2.x;
  719.             this.m11 = var2.y;
  720.             this.m12 = var2.z;
  721.             this.m13 = var2.w;
  722.             break;
  723.          case 2:
  724.             this.m20 = var2.x;
  725.             this.m21 = var2.y;
  726.             this.m22 = var2.z;
  727.             this.m23 = var2.w;
  728.             break;
  729.          case 3:
  730.             this.m30 = var2.x;
  731.             this.m31 = var2.y;
  732.             this.m32 = var2.z;
  733.             this.m33 = var2.w;
  734.             break;
  735.          default:
  736.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d4"));
  737.       }
  738.  
  739.    }
  740.  
  741.    public final void setRow(int var1, double[] var2) {
  742.       switch (var1) {
  743.          case 0:
  744.             this.m00 = var2[0];
  745.             this.m01 = var2[1];
  746.             this.m02 = var2[2];
  747.             this.m03 = var2[3];
  748.             break;
  749.          case 1:
  750.             this.m10 = var2[0];
  751.             this.m11 = var2[1];
  752.             this.m12 = var2[2];
  753.             this.m13 = var2[3];
  754.             break;
  755.          case 2:
  756.             this.m20 = var2[0];
  757.             this.m21 = var2[1];
  758.             this.m22 = var2[2];
  759.             this.m23 = var2[3];
  760.             break;
  761.          case 3:
  762.             this.m30 = var2[0];
  763.             this.m31 = var2[1];
  764.             this.m32 = var2[2];
  765.             this.m33 = var2[3];
  766.             break;
  767.          default:
  768.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d4"));
  769.       }
  770.  
  771.    }
  772.  
  773.    public final void setColumn(int var1, double var2, double var4, double var6, double var8) {
  774.       switch (var1) {
  775.          case 0:
  776.             this.m00 = var2;
  777.             this.m10 = var4;
  778.             this.m20 = var6;
  779.             this.m30 = var8;
  780.             break;
  781.          case 1:
  782.             this.m01 = var2;
  783.             this.m11 = var4;
  784.             this.m21 = var6;
  785.             this.m31 = var8;
  786.             break;
  787.          case 2:
  788.             this.m02 = var2;
  789.             this.m12 = var4;
  790.             this.m22 = var6;
  791.             this.m32 = var8;
  792.             break;
  793.          case 3:
  794.             this.m03 = var2;
  795.             this.m13 = var4;
  796.             this.m23 = var6;
  797.             this.m33 = var8;
  798.             break;
  799.          default:
  800.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d7"));
  801.       }
  802.  
  803.    }
  804.  
  805.    public final void setColumn(int var1, Vector4d var2) {
  806.       switch (var1) {
  807.          case 0:
  808.             this.m00 = var2.x;
  809.             this.m10 = var2.y;
  810.             this.m20 = var2.z;
  811.             this.m30 = var2.w;
  812.             break;
  813.          case 1:
  814.             this.m01 = var2.x;
  815.             this.m11 = var2.y;
  816.             this.m21 = var2.z;
  817.             this.m31 = var2.w;
  818.             break;
  819.          case 2:
  820.             this.m02 = var2.x;
  821.             this.m12 = var2.y;
  822.             this.m22 = var2.z;
  823.             this.m32 = var2.w;
  824.             break;
  825.          case 3:
  826.             this.m03 = var2.x;
  827.             this.m13 = var2.y;
  828.             this.m23 = var2.z;
  829.             this.m33 = var2.w;
  830.             break;
  831.          default:
  832.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d7"));
  833.       }
  834.  
  835.    }
  836.  
  837.    public final void setColumn(int var1, double[] var2) {
  838.       switch (var1) {
  839.          case 0:
  840.             this.m00 = var2[0];
  841.             this.m10 = var2[1];
  842.             this.m20 = var2[2];
  843.             this.m30 = var2[3];
  844.             break;
  845.          case 1:
  846.             this.m01 = var2[0];
  847.             this.m11 = var2[1];
  848.             this.m21 = var2[2];
  849.             this.m31 = var2[3];
  850.             break;
  851.          case 2:
  852.             this.m02 = var2[0];
  853.             this.m12 = var2[1];
  854.             this.m22 = var2[2];
  855.             this.m32 = var2[3];
  856.             break;
  857.          case 3:
  858.             this.m03 = var2[0];
  859.             this.m13 = var2[1];
  860.             this.m23 = var2[2];
  861.             this.m33 = var2[3];
  862.             break;
  863.          default:
  864.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix4d7"));
  865.       }
  866.  
  867.    }
  868.  
  869.    public final void add(double var1) {
  870.       this.m00 += var1;
  871.       this.m01 += var1;
  872.       this.m02 += var1;
  873.       this.m03 += var1;
  874.       this.m10 += var1;
  875.       this.m11 += var1;
  876.       this.m12 += var1;
  877.       this.m13 += var1;
  878.       this.m20 += var1;
  879.       this.m21 += var1;
  880.       this.m22 += var1;
  881.       this.m23 += var1;
  882.       this.m30 += var1;
  883.       this.m31 += var1;
  884.       this.m32 += var1;
  885.       this.m33 += var1;
  886.    }
  887.  
  888.    public final void add(double var1, Matrix4d var3) {
  889.       this.m00 = var3.m00 + var1;
  890.       this.m01 = var3.m01 + var1;
  891.       this.m02 = var3.m02 + var1;
  892.       this.m03 = var3.m03 + var1;
  893.       this.m10 = var3.m10 + var1;
  894.       this.m11 = var3.m11 + var1;
  895.       this.m12 = var3.m12 + var1;
  896.       this.m13 = var3.m13 + var1;
  897.       this.m20 = var3.m20 + var1;
  898.       this.m21 = var3.m21 + var1;
  899.       this.m22 = var3.m22 + var1;
  900.       this.m23 = var3.m23 + var1;
  901.       this.m30 = var3.m30 + var1;
  902.       this.m31 = var3.m31 + var1;
  903.       this.m32 = var3.m32 + var1;
  904.       this.m33 = var3.m33 + var1;
  905.    }
  906.  
  907.    public final void add(Matrix4d var1, Matrix4d var2) {
  908.       this.m00 = var1.m00 + var2.m00;
  909.       this.m01 = var1.m01 + var2.m01;
  910.       this.m02 = var1.m02 + var2.m02;
  911.       this.m03 = var1.m03 + var2.m03;
  912.       this.m10 = var1.m10 + var2.m10;
  913.       this.m11 = var1.m11 + var2.m11;
  914.       this.m12 = var1.m12 + var2.m12;
  915.       this.m13 = var1.m13 + var2.m13;
  916.       this.m20 = var1.m20 + var2.m20;
  917.       this.m21 = var1.m21 + var2.m21;
  918.       this.m22 = var1.m22 + var2.m22;
  919.       this.m23 = var1.m23 + var2.m23;
  920.       this.m30 = var1.m30 + var2.m30;
  921.       this.m31 = var1.m31 + var2.m31;
  922.       this.m32 = var1.m32 + var2.m32;
  923.       this.m33 = var1.m33 + var2.m33;
  924.    }
  925.  
  926.    public final void add(Matrix4d var1) {
  927.       this.m00 += var1.m00;
  928.       this.m01 += var1.m01;
  929.       this.m02 += var1.m02;
  930.       this.m03 += var1.m03;
  931.       this.m10 += var1.m10;
  932.       this.m11 += var1.m11;
  933.       this.m12 += var1.m12;
  934.       this.m13 += var1.m13;
  935.       this.m20 += var1.m20;
  936.       this.m21 += var1.m21;
  937.       this.m22 += var1.m22;
  938.       this.m23 += var1.m23;
  939.       this.m30 += var1.m30;
  940.       this.m31 += var1.m31;
  941.       this.m32 += var1.m32;
  942.       this.m33 += var1.m33;
  943.    }
  944.  
  945.    public final void sub(Matrix4d var1, Matrix4d var2) {
  946.       this.m00 = var1.m00 - var2.m00;
  947.       this.m01 = var1.m01 - var2.m01;
  948.       this.m02 = var1.m02 - var2.m02;
  949.       this.m03 = var1.m03 - var2.m03;
  950.       this.m10 = var1.m10 - var2.m10;
  951.       this.m11 = var1.m11 - var2.m11;
  952.       this.m12 = var1.m12 - var2.m12;
  953.       this.m13 = var1.m13 - var2.m13;
  954.       this.m20 = var1.m20 - var2.m20;
  955.       this.m21 = var1.m21 - var2.m21;
  956.       this.m22 = var1.m22 - var2.m22;
  957.       this.m23 = var1.m23 - var2.m23;
  958.       this.m30 = var1.m30 - var2.m30;
  959.       this.m31 = var1.m31 - var2.m31;
  960.       this.m32 = var1.m32 - var2.m32;
  961.       this.m33 = var1.m33 - var2.m33;
  962.    }
  963.  
  964.    public final void sub(Matrix4d var1) {
  965.       this.m00 -= var1.m00;
  966.       this.m01 -= var1.m01;
  967.       this.m02 -= var1.m02;
  968.       this.m03 -= var1.m03;
  969.       this.m10 -= var1.m10;
  970.       this.m11 -= var1.m11;
  971.       this.m12 -= var1.m12;
  972.       this.m13 -= var1.m13;
  973.       this.m20 -= var1.m20;
  974.       this.m21 -= var1.m21;
  975.       this.m22 -= var1.m22;
  976.       this.m23 -= var1.m23;
  977.       this.m30 -= var1.m30;
  978.       this.m31 -= var1.m31;
  979.       this.m32 -= var1.m32;
  980.       this.m33 -= var1.m33;
  981.    }
  982.  
  983.    public final void transpose() {
  984.       double var1 = this.m10;
  985.       this.m10 = this.m01;
  986.       this.m01 = var1;
  987.       var1 = this.m20;
  988.       this.m20 = this.m02;
  989.       this.m02 = var1;
  990.       var1 = this.m30;
  991.       this.m30 = this.m03;
  992.       this.m03 = var1;
  993.       var1 = this.m21;
  994.       this.m21 = this.m12;
  995.       this.m12 = var1;
  996.       var1 = this.m31;
  997.       this.m31 = this.m13;
  998.       this.m13 = var1;
  999.       var1 = this.m32;
  1000.       this.m32 = this.m23;
  1001.       this.m23 = var1;
  1002.    }
  1003.  
  1004.    public final void transpose(Matrix4d var1) {
  1005.       if (this != var1) {
  1006.          this.m00 = var1.m00;
  1007.          this.m01 = var1.m10;
  1008.          this.m02 = var1.m20;
  1009.          this.m03 = var1.m30;
  1010.          this.m10 = var1.m01;
  1011.          this.m11 = var1.m11;
  1012.          this.m12 = var1.m21;
  1013.          this.m13 = var1.m31;
  1014.          this.m20 = var1.m02;
  1015.          this.m21 = var1.m12;
  1016.          this.m22 = var1.m22;
  1017.          this.m23 = var1.m32;
  1018.          this.m30 = var1.m03;
  1019.          this.m31 = var1.m13;
  1020.          this.m32 = var1.m23;
  1021.          this.m33 = var1.m33;
  1022.       } else {
  1023.          this.transpose();
  1024.       }
  1025.  
  1026.    }
  1027.  
  1028.    public final void set(double[] var1) {
  1029.       this.m00 = var1[0];
  1030.       this.m01 = var1[1];
  1031.       this.m02 = var1[2];
  1032.       this.m03 = var1[3];
  1033.       this.m10 = var1[4];
  1034.       this.m11 = var1[5];
  1035.       this.m12 = var1[6];
  1036.       this.m13 = var1[7];
  1037.       this.m20 = var1[8];
  1038.       this.m21 = var1[9];
  1039.       this.m22 = var1[10];
  1040.       this.m23 = var1[11];
  1041.       this.m30 = var1[12];
  1042.       this.m31 = var1[13];
  1043.       this.m32 = var1[14];
  1044.       this.m33 = var1[15];
  1045.    }
  1046.  
  1047.    public final void set(Matrix3f var1) {
  1048.       this.m00 = (double)var1.m00;
  1049.       this.m01 = (double)var1.m01;
  1050.       this.m02 = (double)var1.m02;
  1051.       this.m03 = (double)0.0F;
  1052.       this.m10 = (double)var1.m10;
  1053.       this.m11 = (double)var1.m11;
  1054.       this.m12 = (double)var1.m12;
  1055.       this.m13 = (double)0.0F;
  1056.       this.m20 = (double)var1.m20;
  1057.       this.m21 = (double)var1.m21;
  1058.       this.m22 = (double)var1.m22;
  1059.       this.m23 = (double)0.0F;
  1060.       this.m30 = (double)0.0F;
  1061.       this.m31 = (double)0.0F;
  1062.       this.m32 = (double)0.0F;
  1063.       this.m33 = (double)1.0F;
  1064.    }
  1065.  
  1066.    public final void set(Matrix3d var1) {
  1067.       this.m00 = var1.m00;
  1068.       this.m01 = var1.m01;
  1069.       this.m02 = var1.m02;
  1070.       this.m03 = (double)0.0F;
  1071.       this.m10 = var1.m10;
  1072.       this.m11 = var1.m11;
  1073.       this.m12 = var1.m12;
  1074.       this.m13 = (double)0.0F;
  1075.       this.m20 = var1.m20;
  1076.       this.m21 = var1.m21;
  1077.       this.m22 = var1.m22;
  1078.       this.m23 = (double)0.0F;
  1079.       this.m30 = (double)0.0F;
  1080.       this.m31 = (double)0.0F;
  1081.       this.m32 = (double)0.0F;
  1082.       this.m33 = (double)1.0F;
  1083.    }
  1084.  
  1085.    public final void set(Quat4d var1) {
  1086.       this.m00 = (double)1.0F - (double)2.0F * var1.y * var1.y - (double)2.0F * var1.z * var1.z;
  1087.       this.m10 = (double)2.0F * (var1.x * var1.y + var1.w * var1.z);
  1088.       this.m20 = (double)2.0F * (var1.x * var1.z - var1.w * var1.y);
  1089.       this.m01 = (double)2.0F * (var1.x * var1.y - var1.w * var1.z);
  1090.       this.m11 = (double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.z * var1.z;
  1091.       this.m21 = (double)2.0F * (var1.y * var1.z + var1.w * var1.x);
  1092.       this.m02 = (double)2.0F * (var1.x * var1.z + var1.w * var1.y);
  1093.       this.m12 = (double)2.0F * (var1.y * var1.z - var1.w * var1.x);
  1094.       this.m22 = (double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.y * var1.y;
  1095.       this.m03 = (double)0.0F;
  1096.       this.m13 = (double)0.0F;
  1097.       this.m23 = (double)0.0F;
  1098.       this.m30 = (double)0.0F;
  1099.       this.m31 = (double)0.0F;
  1100.       this.m32 = (double)0.0F;
  1101.       this.m33 = (double)1.0F;
  1102.    }
  1103.  
  1104.    public final void set(AxisAngle4d var1) {
  1105.       double var2 = Math.sqrt(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z);
  1106.       if (var2 < 1.0E-10) {
  1107.          this.m00 = (double)1.0F;
  1108.          this.m01 = (double)0.0F;
  1109.          this.m02 = (double)0.0F;
  1110.          this.m10 = (double)0.0F;
  1111.          this.m11 = (double)1.0F;
  1112.          this.m12 = (double)0.0F;
  1113.          this.m20 = (double)0.0F;
  1114.          this.m21 = (double)0.0F;
  1115.          this.m22 = (double)1.0F;
  1116.       } else {
  1117.          var2 = (double)1.0F / var2;
  1118.          double var4 = var1.x * var2;
  1119.          double var6 = var1.y * var2;
  1120.          double var8 = var1.z * var2;
  1121.          double var10 = Math.sin(var1.angle);
  1122.          double var12 = Math.cos(var1.angle);
  1123.          double var14 = (double)1.0F - var12;
  1124.          double var16 = var4 * var8;
  1125.          double var18 = var4 * var6;
  1126.          double var20 = var6 * var8;
  1127.          this.m00 = var14 * var4 * var4 + var12;
  1128.          this.m01 = var14 * var18 - var10 * var8;
  1129.          this.m02 = var14 * var16 + var10 * var6;
  1130.          this.m10 = var14 * var18 + var10 * var8;
  1131.          this.m11 = var14 * var6 * var6 + var12;
  1132.          this.m12 = var14 * var20 - var10 * var4;
  1133.          this.m20 = var14 * var16 - var10 * var6;
  1134.          this.m21 = var14 * var20 + var10 * var4;
  1135.          this.m22 = var14 * var8 * var8 + var12;
  1136.       }
  1137.  
  1138.       this.m03 = (double)0.0F;
  1139.       this.m13 = (double)0.0F;
  1140.       this.m23 = (double)0.0F;
  1141.       this.m30 = (double)0.0F;
  1142.       this.m31 = (double)0.0F;
  1143.       this.m32 = (double)0.0F;
  1144.       this.m33 = (double)1.0F;
  1145.    }
  1146.  
  1147.    public final void set(Quat4f var1) {
  1148.       this.m00 = (double)1.0F - (double)2.0F * (double)var1.y * (double)var1.y - (double)2.0F * (double)var1.z * (double)var1.z;
  1149.       this.m10 = (double)2.0F * (double)(var1.x * var1.y + var1.w * var1.z);
  1150.       this.m20 = (double)2.0F * (double)(var1.x * var1.z - var1.w * var1.y);
  1151.       this.m01 = (double)2.0F * (double)(var1.x * var1.y - var1.w * var1.z);
  1152.       this.m11 = (double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.z * (double)var1.z;
  1153.       this.m21 = (double)2.0F * (double)(var1.y * var1.z + var1.w * var1.x);
  1154.       this.m02 = (double)2.0F * (double)(var1.x * var1.z + var1.w * var1.y);
  1155.       this.m12 = (double)2.0F * (double)(var1.y * var1.z - var1.w * var1.x);
  1156.       this.m22 = (double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.y * (double)var1.y;
  1157.       this.m03 = (double)0.0F;
  1158.       this.m13 = (double)0.0F;
  1159.       this.m23 = (double)0.0F;
  1160.       this.m30 = (double)0.0F;
  1161.       this.m31 = (double)0.0F;
  1162.       this.m32 = (double)0.0F;
  1163.       this.m33 = (double)1.0F;
  1164.    }
  1165.  
  1166.    public final void set(AxisAngle4f var1) {
  1167.       double var2 = Math.sqrt((double)(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z));
  1168.       if (var2 < 1.0E-10) {
  1169.          this.m00 = (double)1.0F;
  1170.          this.m01 = (double)0.0F;
  1171.          this.m02 = (double)0.0F;
  1172.          this.m10 = (double)0.0F;
  1173.          this.m11 = (double)1.0F;
  1174.          this.m12 = (double)0.0F;
  1175.          this.m20 = (double)0.0F;
  1176.          this.m21 = (double)0.0F;
  1177.          this.m22 = (double)1.0F;
  1178.       } else {
  1179.          var2 = (double)1.0F / var2;
  1180.          double var4 = (double)var1.x * var2;
  1181.          double var6 = (double)var1.y * var2;
  1182.          double var8 = (double)var1.z * var2;
  1183.          double var10 = Math.sin((double)var1.angle);
  1184.          double var12 = Math.cos((double)var1.angle);
  1185.          double var14 = (double)1.0F - var12;
  1186.          double var16 = var4 * var8;
  1187.          double var18 = var4 * var6;
  1188.          double var20 = var6 * var8;
  1189.          this.m00 = var14 * var4 * var4 + var12;
  1190.          this.m01 = var14 * var18 - var10 * var8;
  1191.          this.m02 = var14 * var16 + var10 * var6;
  1192.          this.m10 = var14 * var18 + var10 * var8;
  1193.          this.m11 = var14 * var6 * var6 + var12;
  1194.          this.m12 = var14 * var20 - var10 * var4;
  1195.          this.m20 = var14 * var16 - var10 * var6;
  1196.          this.m21 = var14 * var20 + var10 * var4;
  1197.          this.m22 = var14 * var8 * var8 + var12;
  1198.       }
  1199.  
  1200.       this.m03 = (double)0.0F;
  1201.       this.m13 = (double)0.0F;
  1202.       this.m23 = (double)0.0F;
  1203.       this.m30 = (double)0.0F;
  1204.       this.m31 = (double)0.0F;
  1205.       this.m32 = (double)0.0F;
  1206.       this.m33 = (double)1.0F;
  1207.    }
  1208.  
  1209.    public final void set(Quat4d var1, Vector3d var2, double var3) {
  1210.       this.m00 = var3 * ((double)1.0F - (double)2.0F * var1.y * var1.y - (double)2.0F * var1.z * var1.z);
  1211.       this.m10 = var3 * (double)2.0F * (var1.x * var1.y + var1.w * var1.z);
  1212.       this.m20 = var3 * (double)2.0F * (var1.x * var1.z - var1.w * var1.y);
  1213.       this.m01 = var3 * (double)2.0F * (var1.x * var1.y - var1.w * var1.z);
  1214.       this.m11 = var3 * ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.z * var1.z);
  1215.       this.m21 = var3 * (double)2.0F * (var1.y * var1.z + var1.w * var1.x);
  1216.       this.m02 = var3 * (double)2.0F * (var1.x * var1.z + var1.w * var1.y);
  1217.       this.m12 = var3 * (double)2.0F * (var1.y * var1.z - var1.w * var1.x);
  1218.       this.m22 = var3 * ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.y * var1.y);
  1219.       this.m03 = var2.x;
  1220.       this.m13 = var2.y;
  1221.       this.m23 = var2.z;
  1222.       this.m30 = (double)0.0F;
  1223.       this.m31 = (double)0.0F;
  1224.       this.m32 = (double)0.0F;
  1225.       this.m33 = (double)1.0F;
  1226.    }
  1227.  
  1228.    public final void set(Quat4f var1, Vector3d var2, double var3) {
  1229.       this.m00 = var3 * ((double)1.0F - (double)2.0F * (double)var1.y * (double)var1.y - (double)2.0F * (double)var1.z * (double)var1.z);
  1230.       this.m10 = var3 * (double)2.0F * (double)(var1.x * var1.y + var1.w * var1.z);
  1231.       this.m20 = var3 * (double)2.0F * (double)(var1.x * var1.z - var1.w * var1.y);
  1232.       this.m01 = var3 * (double)2.0F * (double)(var1.x * var1.y - var1.w * var1.z);
  1233.       this.m11 = var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.z * (double)var1.z);
  1234.       this.m21 = var3 * (double)2.0F * (double)(var1.y * var1.z + var1.w * var1.x);
  1235.       this.m02 = var3 * (double)2.0F * (double)(var1.x * var1.z + var1.w * var1.y);
  1236.       this.m12 = var3 * (double)2.0F * (double)(var1.y * var1.z - var1.w * var1.x);
  1237.       this.m22 = var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.y * (double)var1.y);
  1238.       this.m03 = var2.x;
  1239.       this.m13 = var2.y;
  1240.       this.m23 = var2.z;
  1241.       this.m30 = (double)0.0F;
  1242.       this.m31 = (double)0.0F;
  1243.       this.m32 = (double)0.0F;
  1244.       this.m33 = (double)1.0F;
  1245.    }
  1246.  
  1247.    public final void set(Quat4f var1, Vector3f var2, float var3) {
  1248.       this.m00 = (double)var3 * ((double)1.0F - (double)2.0F * (double)var1.y * (double)var1.y - (double)2.0F * (double)var1.z * (double)var1.z);
  1249.       this.m10 = (double)var3 * (double)2.0F * (double)(var1.x * var1.y + var1.w * var1.z);
  1250.       this.m20 = (double)var3 * (double)2.0F * (double)(var1.x * var1.z - var1.w * var1.y);
  1251.       this.m01 = (double)var3 * (double)2.0F * (double)(var1.x * var1.y - var1.w * var1.z);
  1252.       this.m11 = (double)var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.z * (double)var1.z);
  1253.       this.m21 = (double)var3 * (double)2.0F * (double)(var1.y * var1.z + var1.w * var1.x);
  1254.       this.m02 = (double)var3 * (double)2.0F * (double)(var1.x * var1.z + var1.w * var1.y);
  1255.       this.m12 = (double)var3 * (double)2.0F * (double)(var1.y * var1.z - var1.w * var1.x);
  1256.       this.m22 = (double)var3 * ((double)1.0F - (double)2.0F * (double)var1.x * (double)var1.x - (double)2.0F * (double)var1.y * (double)var1.y);
  1257.       this.m03 = (double)var2.x;
  1258.       this.m13 = (double)var2.y;
  1259.       this.m23 = (double)var2.z;
  1260.       this.m30 = (double)0.0F;
  1261.       this.m31 = (double)0.0F;
  1262.       this.m32 = (double)0.0F;
  1263.       this.m33 = (double)1.0F;
  1264.    }
  1265.  
  1266.    public final void set(Matrix4f var1) {
  1267.       this.m00 = (double)var1.m00;
  1268.       this.m01 = (double)var1.m01;
  1269.       this.m02 = (double)var1.m02;
  1270.       this.m03 = (double)var1.m03;
  1271.       this.m10 = (double)var1.m10;
  1272.       this.m11 = (double)var1.m11;
  1273.       this.m12 = (double)var1.m12;
  1274.       this.m13 = (double)var1.m13;
  1275.       this.m20 = (double)var1.m20;
  1276.       this.m21 = (double)var1.m21;
  1277.       this.m22 = (double)var1.m22;
  1278.       this.m23 = (double)var1.m23;
  1279.       this.m30 = (double)var1.m30;
  1280.       this.m31 = (double)var1.m31;
  1281.       this.m32 = (double)var1.m32;
  1282.       this.m33 = (double)var1.m33;
  1283.    }
  1284.  
  1285.    public final void set(Matrix4d var1) {
  1286.       this.m00 = var1.m00;
  1287.       this.m01 = var1.m01;
  1288.       this.m02 = var1.m02;
  1289.       this.m03 = var1.m03;
  1290.       this.m10 = var1.m10;
  1291.       this.m11 = var1.m11;
  1292.       this.m12 = var1.m12;
  1293.       this.m13 = var1.m13;
  1294.       this.m20 = var1.m20;
  1295.       this.m21 = var1.m21;
  1296.       this.m22 = var1.m22;
  1297.       this.m23 = var1.m23;
  1298.       this.m30 = var1.m30;
  1299.       this.m31 = var1.m31;
  1300.       this.m32 = var1.m32;
  1301.       this.m33 = var1.m33;
  1302.    }
  1303.  
  1304.    public final void invert(Matrix4d var1) {
  1305.       this.invertGeneral(var1);
  1306.    }
  1307.  
  1308.    public final void invert() {
  1309.       this.invertGeneral(this);
  1310.    }
  1311.  
  1312.    final void invertGeneral(Matrix4d var1) {
  1313.       double[] var2 = new double[16];
  1314.       int[] var3 = new int[4];
  1315.       double[] var7 = new double[]{var1.m00, var1.m01, var1.m02, var1.m03, var1.m10, var1.m11, var1.m12, var1.m13, var1.m20, var1.m21, var1.m22, var1.m23, var1.m30, var1.m31, var1.m32, var1.m33};
  1316.       if (!luDecomposition(var7, var3)) {
  1317.          throw new SingularMatrixException(VecMathI18N.getString("Matrix4d10"));
  1318.       } else {
  1319.          for(int var4 = 0; var4 < 16; ++var4) {
  1320.             var2[var4] = (double)0.0F;
  1321.          }
  1322.  
  1323.          var2[0] = (double)1.0F;
  1324.          var2[5] = (double)1.0F;
  1325.          var2[10] = (double)1.0F;
  1326.          var2[15] = (double)1.0F;
  1327.          luBacksubstitution(var7, var3, var2);
  1328.          this.m00 = var2[0];
  1329.          this.m01 = var2[1];
  1330.          this.m02 = var2[2];
  1331.          this.m03 = var2[3];
  1332.          this.m10 = var2[4];
  1333.          this.m11 = var2[5];
  1334.          this.m12 = var2[6];
  1335.          this.m13 = var2[7];
  1336.          this.m20 = var2[8];
  1337.          this.m21 = var2[9];
  1338.          this.m22 = var2[10];
  1339.          this.m23 = var2[11];
  1340.          this.m30 = var2[12];
  1341.          this.m31 = var2[13];
  1342.          this.m32 = var2[14];
  1343.          this.m33 = var2[15];
  1344.       }
  1345.    }
  1346.  
  1347.    static boolean luDecomposition(double[] var0, int[] var1) {
  1348.       double[] var2 = new double[4];
  1349.       int var5 = 0;
  1350.       int var6 = 0;
  1351.  
  1352.       double var7;
  1353.       for(int var3 = 4; var3-- != 0; var2[var6++] = (double)1.0F / var7) {
  1354.          var7 = (double)0.0F;
  1355.          int var4 = 4;
  1356.  
  1357.          while(var4-- != 0) {
  1358.             double var9 = var0[var5++];
  1359.             var9 = Math.abs(var9);
  1360.             if (var9 > var7) {
  1361.                var7 = var9;
  1362.             }
  1363.          }
  1364.  
  1365.          if (var7 == (double)0.0F) {
  1366.             return false;
  1367.          }
  1368.       }
  1369.  
  1370.       byte var18 = 0;
  1371.  
  1372.       for(int var17 = 0; var17 < 4; ++var17) {
  1373.          for(int var19 = 0; var19 < var17; ++var19) {
  1374.             int var8 = var18 + 4 * var19 + var17;
  1375.             double var11 = var0[var8];
  1376.             int var23 = var19;
  1377.             int var29 = var18 + 4 * var19;
  1378.  
  1379.             for(int var10 = var18 + var17; var23-- != 0; var10 += 4) {
  1380.                var11 -= var0[var29] * var0[var10];
  1381.                ++var29;
  1382.             }
  1383.  
  1384.             var0[var8] = var11;
  1385.          }
  1386.  
  1387.          double var13 = (double)0.0F;
  1388.          var6 = -1;
  1389.  
  1390.          for(int var20 = var17; var20 < 4; ++var20) {
  1391.             int var26 = var18 + 4 * var20 + var17;
  1392.             double var34 = var0[var26];
  1393.             int var24 = var17;
  1394.             int var30 = var18 + 4 * var20;
  1395.  
  1396.             for(int var32 = var18 + var17; var24-- != 0; var32 += 4) {
  1397.                var34 -= var0[var30] * var0[var32];
  1398.                ++var30;
  1399.             }
  1400.  
  1401.             var0[var26] = var34;
  1402.             double var15;
  1403.             if ((var15 = var2[var20] * Math.abs(var34)) >= var13) {
  1404.                var13 = var15;
  1405.                var6 = var20;
  1406.             }
  1407.          }
  1408.  
  1409.          if (var6 < 0) {
  1410.             throw new RuntimeException(VecMathI18N.getString("Matrix4d11"));
  1411.          }
  1412.  
  1413.          if (var17 != var6) {
  1414.             int var25 = 4;
  1415.             int var31 = var18 + 4 * var6;
  1416.  
  1417.             double var35;
  1418.             for(int var33 = var18 + 4 * var17; var25-- != 0; var0[var33++] = var35) {
  1419.                var35 = var0[var31];
  1420.                var0[var31++] = var0[var33];
  1421.             }
  1422.  
  1423.             var2[var6] = var2[var17];
  1424.          }
  1425.  
  1426.          var1[var17] = var6;
  1427.          if (var0[var18 + 4 * var17 + var17] == (double)0.0F) {
  1428.             return false;
  1429.          }
  1430.  
  1431.          if (var17 != 3) {
  1432.             double var36 = (double)1.0F / var0[var18 + 4 * var17 + var17];
  1433.             int var27 = var18 + 4 * (var17 + 1) + var17;
  1434.  
  1435.             for(int var21 = 3 - var17; var21-- != 0; var27 += 4) {
  1436.                var0[var27] *= var36;
  1437.             }
  1438.          }
  1439.       }
  1440.  
  1441.       return true;
  1442.    }
  1443.  
  1444.    static void luBacksubstitution(double[] var0, int[] var1, double[] var2) {
  1445.       byte var8 = 0;
  1446.  
  1447.       for(int var7 = 0; var7 < 4; ++var7) {
  1448.          int var9 = var7;
  1449.          int var4 = -1;
  1450.  
  1451.          for(int var3 = 0; var3 < 4; ++var3) {
  1452.             int var5 = var1[var8 + var3];
  1453.             double var11 = var2[var9 + 4 * var5];
  1454.             var2[var9 + 4 * var5] = var2[var9 + 4 * var3];
  1455.             if (var4 >= 0) {
  1456.                int var10 = var3 * 4;
  1457.  
  1458.                for(int var6 = var4; var6 <= var3 - 1; ++var6) {
  1459.                   var11 -= var0[var10 + var6] * var2[var9 + 4 * var6];
  1460.                }
  1461.             } else if (var11 != (double)0.0F) {
  1462.                var4 = var3;
  1463.             }
  1464.  
  1465.             var2[var9 + 4 * var3] = var11;
  1466.          }
  1467.  
  1468.          int var13 = 12;
  1469.          var2[var9 + 12] /= var0[var13 + 3];
  1470.          var13 -= 4;
  1471.          var2[var9 + 8] = (var2[var9 + 8] - var0[var13 + 3] * var2[var9 + 12]) / var0[var13 + 2];
  1472.          var13 -= 4;
  1473.          var2[var9 + 4] = (var2[var9 + 4] - var0[var13 + 2] * var2[var9 + 8] - var0[var13 + 3] * var2[var9 + 12]) / var0[var13 + 1];
  1474.          var13 -= 4;
  1475.          var2[var9 + 0] = (var2[var9 + 0] - var0[var13 + 1] * var2[var9 + 4] - var0[var13 + 2] * var2[var9 + 8] - var0[var13 + 3] * var2[var9 + 12]) / var0[var13 + 0];
  1476.       }
  1477.  
  1478.    }
  1479.  
  1480.    public final double determinant() {
  1481.       double var1 = this.m00 * (this.m11 * this.m22 * this.m33 + this.m12 * this.m23 * this.m31 + this.m13 * this.m21 * this.m32 - this.m13 * this.m22 * this.m31 - this.m11 * this.m23 * this.m32 - this.m12 * this.m21 * this.m33);
  1482.       var1 -= this.m01 * (this.m10 * this.m22 * this.m33 + this.m12 * this.m23 * this.m30 + this.m13 * this.m20 * this.m32 - this.m13 * this.m22 * this.m30 - this.m10 * this.m23 * this.m32 - this.m12 * this.m20 * this.m33);
  1483.       var1 += this.m02 * (this.m10 * this.m21 * this.m33 + this.m11 * this.m23 * this.m30 + this.m13 * this.m20 * this.m31 - this.m13 * this.m21 * this.m30 - this.m10 * this.m23 * this.m31 - this.m11 * this.m20 * this.m33);
  1484.       var1 -= this.m03 * (this.m10 * this.m21 * this.m32 + this.m11 * this.m22 * this.m30 + this.m12 * this.m20 * this.m31 - this.m12 * this.m21 * this.m30 - this.m10 * this.m22 * this.m31 - this.m11 * this.m20 * this.m32);
  1485.       return var1;
  1486.    }
  1487.  
  1488.    public final void set(double var1) {
  1489.       this.m00 = var1;
  1490.       this.m01 = (double)0.0F;
  1491.       this.m02 = (double)0.0F;
  1492.       this.m03 = (double)0.0F;
  1493.       this.m10 = (double)0.0F;
  1494.       this.m11 = var1;
  1495.       this.m12 = (double)0.0F;
  1496.       this.m13 = (double)0.0F;
  1497.       this.m20 = (double)0.0F;
  1498.       this.m21 = (double)0.0F;
  1499.       this.m22 = var1;
  1500.       this.m23 = (double)0.0F;
  1501.       this.m30 = (double)0.0F;
  1502.       this.m31 = (double)0.0F;
  1503.       this.m32 = (double)0.0F;
  1504.       this.m33 = (double)1.0F;
  1505.    }
  1506.  
  1507.    public final void set(Vector3d var1) {
  1508.       this.m00 = (double)1.0F;
  1509.       this.m01 = (double)0.0F;
  1510.       this.m02 = (double)0.0F;
  1511.       this.m03 = var1.x;
  1512.       this.m10 = (double)0.0F;
  1513.       this.m11 = (double)1.0F;
  1514.       this.m12 = (double)0.0F;
  1515.       this.m13 = var1.y;
  1516.       this.m20 = (double)0.0F;
  1517.       this.m21 = (double)0.0F;
  1518.       this.m22 = (double)1.0F;
  1519.       this.m23 = var1.z;
  1520.       this.m30 = (double)0.0F;
  1521.       this.m31 = (double)0.0F;
  1522.       this.m32 = (double)0.0F;
  1523.       this.m33 = (double)1.0F;
  1524.    }
  1525.  
  1526.    public final void set(double var1, Vector3d var3) {
  1527.       this.m00 = var1;
  1528.       this.m01 = (double)0.0F;
  1529.       this.m02 = (double)0.0F;
  1530.       this.m03 = var3.x;
  1531.       this.m10 = (double)0.0F;
  1532.       this.m11 = var1;
  1533.       this.m12 = (double)0.0F;
  1534.       this.m13 = var3.y;
  1535.       this.m20 = (double)0.0F;
  1536.       this.m21 = (double)0.0F;
  1537.       this.m22 = var1;
  1538.       this.m23 = var3.z;
  1539.       this.m30 = (double)0.0F;
  1540.       this.m31 = (double)0.0F;
  1541.       this.m32 = (double)0.0F;
  1542.       this.m33 = (double)1.0F;
  1543.    }
  1544.  
  1545.    public final void set(Vector3d var1, double var2) {
  1546.       this.m00 = var2;
  1547.       this.m01 = (double)0.0F;
  1548.       this.m02 = (double)0.0F;
  1549.       this.m03 = var2 * var1.x;
  1550.       this.m10 = (double)0.0F;
  1551.       this.m11 = var2;
  1552.       this.m12 = (double)0.0F;
  1553.       this.m13 = var2 * var1.y;
  1554.       this.m20 = (double)0.0F;
  1555.       this.m21 = (double)0.0F;
  1556.       this.m22 = var2;
  1557.       this.m23 = var2 * var1.z;
  1558.       this.m30 = (double)0.0F;
  1559.       this.m31 = (double)0.0F;
  1560.       this.m32 = (double)0.0F;
  1561.       this.m33 = (double)1.0F;
  1562.    }
  1563.  
  1564.    public final void set(Matrix3f var1, Vector3f var2, float var3) {
  1565.       this.m00 = (double)(var1.m00 * var3);
  1566.       this.m01 = (double)(var1.m01 * var3);
  1567.       this.m02 = (double)(var1.m02 * var3);
  1568.       this.m03 = (double)var2.x;
  1569.       this.m10 = (double)(var1.m10 * var3);
  1570.       this.m11 = (double)(var1.m11 * var3);
  1571.       this.m12 = (double)(var1.m12 * var3);
  1572.       this.m13 = (double)var2.y;
  1573.       this.m20 = (double)(var1.m20 * var3);
  1574.       this.m21 = (double)(var1.m21 * var3);
  1575.       this.m22 = (double)(var1.m22 * var3);
  1576.       this.m23 = (double)var2.z;
  1577.       this.m30 = (double)0.0F;
  1578.       this.m31 = (double)0.0F;
  1579.       this.m32 = (double)0.0F;
  1580.       this.m33 = (double)1.0F;
  1581.    }
  1582.  
  1583.    public final void set(Matrix3d var1, Vector3d var2, double var3) {
  1584.       this.m00 = var1.m00 * var3;
  1585.       this.m01 = var1.m01 * var3;
  1586.       this.m02 = var1.m02 * var3;
  1587.       this.m03 = var2.x;
  1588.       this.m10 = var1.m10 * var3;
  1589.       this.m11 = var1.m11 * var3;
  1590.       this.m12 = var1.m12 * var3;
  1591.       this.m13 = var2.y;
  1592.       this.m20 = var1.m20 * var3;
  1593.       this.m21 = var1.m21 * var3;
  1594.       this.m22 = var1.m22 * var3;
  1595.       this.m23 = var2.z;
  1596.       this.m30 = (double)0.0F;
  1597.       this.m31 = (double)0.0F;
  1598.       this.m32 = (double)0.0F;
  1599.       this.m33 = (double)1.0F;
  1600.    }
  1601.  
  1602.    public final void setTranslation(Vector3d var1) {
  1603.       this.m03 = var1.x;
  1604.       this.m13 = var1.y;
  1605.       this.m23 = var1.z;
  1606.    }
  1607.  
  1608.    public final void rotX(double var1) {
  1609.       double var3 = Math.sin(var1);
  1610.       double var5 = Math.cos(var1);
  1611.       this.m00 = (double)1.0F;
  1612.       this.m01 = (double)0.0F;
  1613.       this.m02 = (double)0.0F;
  1614.       this.m03 = (double)0.0F;
  1615.       this.m10 = (double)0.0F;
  1616.       this.m11 = var5;
  1617.       this.m12 = -var3;
  1618.       this.m13 = (double)0.0F;
  1619.       this.m20 = (double)0.0F;
  1620.       this.m21 = var3;
  1621.       this.m22 = var5;
  1622.       this.m23 = (double)0.0F;
  1623.       this.m30 = (double)0.0F;
  1624.       this.m31 = (double)0.0F;
  1625.       this.m32 = (double)0.0F;
  1626.       this.m33 = (double)1.0F;
  1627.    }
  1628.  
  1629.    public final void rotY(double var1) {
  1630.       double var3 = Math.sin(var1);
  1631.       double var5 = Math.cos(var1);
  1632.       this.m00 = var5;
  1633.       this.m01 = (double)0.0F;
  1634.       this.m02 = var3;
  1635.       this.m03 = (double)0.0F;
  1636.       this.m10 = (double)0.0F;
  1637.       this.m11 = (double)1.0F;
  1638.       this.m12 = (double)0.0F;
  1639.       this.m13 = (double)0.0F;
  1640.       this.m20 = -var3;
  1641.       this.m21 = (double)0.0F;
  1642.       this.m22 = var5;
  1643.       this.m23 = (double)0.0F;
  1644.       this.m30 = (double)0.0F;
  1645.       this.m31 = (double)0.0F;
  1646.       this.m32 = (double)0.0F;
  1647.       this.m33 = (double)1.0F;
  1648.    }
  1649.  
  1650.    public final void rotZ(double var1) {
  1651.       double var3 = Math.sin(var1);
  1652.       double var5 = Math.cos(var1);
  1653.       this.m00 = var5;
  1654.       this.m01 = -var3;
  1655.       this.m02 = (double)0.0F;
  1656.       this.m03 = (double)0.0F;
  1657.       this.m10 = var3;
  1658.       this.m11 = var5;
  1659.       this.m12 = (double)0.0F;
  1660.       this.m13 = (double)0.0F;
  1661.       this.m20 = (double)0.0F;
  1662.       this.m21 = (double)0.0F;
  1663.       this.m22 = (double)1.0F;
  1664.       this.m23 = (double)0.0F;
  1665.       this.m30 = (double)0.0F;
  1666.       this.m31 = (double)0.0F;
  1667.       this.m32 = (double)0.0F;
  1668.       this.m33 = (double)1.0F;
  1669.    }
  1670.  
  1671.    public final void mul(double var1) {
  1672.       this.m00 *= var1;
  1673.       this.m01 *= var1;
  1674.       this.m02 *= var1;
  1675.       this.m03 *= var1;
  1676.       this.m10 *= var1;
  1677.       this.m11 *= var1;
  1678.       this.m12 *= var1;
  1679.       this.m13 *= var1;
  1680.       this.m20 *= var1;
  1681.       this.m21 *= var1;
  1682.       this.m22 *= var1;
  1683.       this.m23 *= var1;
  1684.       this.m30 *= var1;
  1685.       this.m31 *= var1;
  1686.       this.m32 *= var1;
  1687.       this.m33 *= var1;
  1688.    }
  1689.  
  1690.    public final void mul(double var1, Matrix4d var3) {
  1691.       this.m00 = var3.m00 * var1;
  1692.       this.m01 = var3.m01 * var1;
  1693.       this.m02 = var3.m02 * var1;
  1694.       this.m03 = var3.m03 * var1;
  1695.       this.m10 = var3.m10 * var1;
  1696.       this.m11 = var3.m11 * var1;
  1697.       this.m12 = var3.m12 * var1;
  1698.       this.m13 = var3.m13 * var1;
  1699.       this.m20 = var3.m20 * var1;
  1700.       this.m21 = var3.m21 * var1;
  1701.       this.m22 = var3.m22 * var1;
  1702.       this.m23 = var3.m23 * var1;
  1703.       this.m30 = var3.m30 * var1;
  1704.       this.m31 = var3.m31 * var1;
  1705.       this.m32 = var3.m32 * var1;
  1706.       this.m33 = var3.m33 * var1;
  1707.    }
  1708.  
  1709.    public final void mul(Matrix4d var1) {
  1710.       double var2 = this.m00 * var1.m00 + this.m01 * var1.m10 + this.m02 * var1.m20 + this.m03 * var1.m30;
  1711.       double var4 = this.m00 * var1.m01 + this.m01 * var1.m11 + this.m02 * var1.m21 + this.m03 * var1.m31;
  1712.       double var6 = this.m00 * var1.m02 + this.m01 * var1.m12 + this.m02 * var1.m22 + this.m03 * var1.m32;
  1713.       double var8 = this.m00 * var1.m03 + this.m01 * var1.m13 + this.m02 * var1.m23 + this.m03 * var1.m33;
  1714.       double var10 = this.m10 * var1.m00 + this.m11 * var1.m10 + this.m12 * var1.m20 + this.m13 * var1.m30;
  1715.       double var12 = this.m10 * var1.m01 + this.m11 * var1.m11 + this.m12 * var1.m21 + this.m13 * var1.m31;
  1716.       double var14 = this.m10 * var1.m02 + this.m11 * var1.m12 + this.m12 * var1.m22 + this.m13 * var1.m32;
  1717.       double var16 = this.m10 * var1.m03 + this.m11 * var1.m13 + this.m12 * var1.m23 + this.m13 * var1.m33;
  1718.       double var18 = this.m20 * var1.m00 + this.m21 * var1.m10 + this.m22 * var1.m20 + this.m23 * var1.m30;
  1719.       double var20 = this.m20 * var1.m01 + this.m21 * var1.m11 + this.m22 * var1.m21 + this.m23 * var1.m31;
  1720.       double var22 = this.m20 * var1.m02 + this.m21 * var1.m12 + this.m22 * var1.m22 + this.m23 * var1.m32;
  1721.       double var24 = this.m20 * var1.m03 + this.m21 * var1.m13 + this.m22 * var1.m23 + this.m23 * var1.m33;
  1722.       double var26 = this.m30 * var1.m00 + this.m31 * var1.m10 + this.m32 * var1.m20 + this.m33 * var1.m30;
  1723.       double var28 = this.m30 * var1.m01 + this.m31 * var1.m11 + this.m32 * var1.m21 + this.m33 * var1.m31;
  1724.       double var30 = this.m30 * var1.m02 + this.m31 * var1.m12 + this.m32 * var1.m22 + this.m33 * var1.m32;
  1725.       double var32 = this.m30 * var1.m03 + this.m31 * var1.m13 + this.m32 * var1.m23 + this.m33 * var1.m33;
  1726.       this.m00 = var2;
  1727.       this.m01 = var4;
  1728.       this.m02 = var6;
  1729.       this.m03 = var8;
  1730.       this.m10 = var10;
  1731.       this.m11 = var12;
  1732.       this.m12 = var14;
  1733.       this.m13 = var16;
  1734.       this.m20 = var18;
  1735.       this.m21 = var20;
  1736.       this.m22 = var22;
  1737.       this.m23 = var24;
  1738.       this.m30 = var26;
  1739.       this.m31 = var28;
  1740.       this.m32 = var30;
  1741.       this.m33 = var32;
  1742.    }
  1743.  
  1744.    public final void mul(Matrix4d var1, Matrix4d var2) {
  1745.       if (this != var1 && this != var2) {
  1746.          this.m00 = var1.m00 * var2.m00 + var1.m01 * var2.m10 + var1.m02 * var2.m20 + var1.m03 * var2.m30;
  1747.          this.m01 = var1.m00 * var2.m01 + var1.m01 * var2.m11 + var1.m02 * var2.m21 + var1.m03 * var2.m31;
  1748.          this.m02 = var1.m00 * var2.m02 + var1.m01 * var2.m12 + var1.m02 * var2.m22 + var1.m03 * var2.m32;
  1749.          this.m03 = var1.m00 * var2.m03 + var1.m01 * var2.m13 + var1.m02 * var2.m23 + var1.m03 * var2.m33;
  1750.          this.m10 = var1.m10 * var2.m00 + var1.m11 * var2.m10 + var1.m12 * var2.m20 + var1.m13 * var2.m30;
  1751.          this.m11 = var1.m10 * var2.m01 + var1.m11 * var2.m11 + var1.m12 * var2.m21 + var1.m13 * var2.m31;
  1752.          this.m12 = var1.m10 * var2.m02 + var1.m11 * var2.m12 + var1.m12 * var2.m22 + var1.m13 * var2.m32;
  1753.          this.m13 = var1.m10 * var2.m03 + var1.m11 * var2.m13 + var1.m12 * var2.m23 + var1.m13 * var2.m33;
  1754.          this.m20 = var1.m20 * var2.m00 + var1.m21 * var2.m10 + var1.m22 * var2.m20 + var1.m23 * var2.m30;
  1755.          this.m21 = var1.m20 * var2.m01 + var1.m21 * var2.m11 + var1.m22 * var2.m21 + var1.m23 * var2.m31;
  1756.          this.m22 = var1.m20 * var2.m02 + var1.m21 * var2.m12 + var1.m22 * var2.m22 + var1.m23 * var2.m32;
  1757.          this.m23 = var1.m20 * var2.m03 + var1.m21 * var2.m13 + var1.m22 * var2.m23 + var1.m23 * var2.m33;
  1758.          this.m30 = var1.m30 * var2.m00 + var1.m31 * var2.m10 + var1.m32 * var2.m20 + var1.m33 * var2.m30;
  1759.          this.m31 = var1.m30 * var2.m01 + var1.m31 * var2.m11 + var1.m32 * var2.m21 + var1.m33 * var2.m31;
  1760.          this.m32 = var1.m30 * var2.m02 + var1.m31 * var2.m12 + var1.m32 * var2.m22 + var1.m33 * var2.m32;
  1761.          this.m33 = var1.m30 * var2.m03 + var1.m31 * var2.m13 + var1.m32 * var2.m23 + var1.m33 * var2.m33;
  1762.       } else {
  1763.          double var3 = var1.m00 * var2.m00 + var1.m01 * var2.m10 + var1.m02 * var2.m20 + var1.m03 * var2.m30;
  1764.          double var5 = var1.m00 * var2.m01 + var1.m01 * var2.m11 + var1.m02 * var2.m21 + var1.m03 * var2.m31;
  1765.          double var7 = var1.m00 * var2.m02 + var1.m01 * var2.m12 + var1.m02 * var2.m22 + var1.m03 * var2.m32;
  1766.          double var9 = var1.m00 * var2.m03 + var1.m01 * var2.m13 + var1.m02 * var2.m23 + var1.m03 * var2.m33;
  1767.          double var11 = var1.m10 * var2.m00 + var1.m11 * var2.m10 + var1.m12 * var2.m20 + var1.m13 * var2.m30;
  1768.          double var13 = var1.m10 * var2.m01 + var1.m11 * var2.m11 + var1.m12 * var2.m21 + var1.m13 * var2.m31;
  1769.          double var15 = var1.m10 * var2.m02 + var1.m11 * var2.m12 + var1.m12 * var2.m22 + var1.m13 * var2.m32;
  1770.          double var17 = var1.m10 * var2.m03 + var1.m11 * var2.m13 + var1.m12 * var2.m23 + var1.m13 * var2.m33;
  1771.          double var19 = var1.m20 * var2.m00 + var1.m21 * var2.m10 + var1.m22 * var2.m20 + var1.m23 * var2.m30;
  1772.          double var21 = var1.m20 * var2.m01 + var1.m21 * var2.m11 + var1.m22 * var2.m21 + var1.m23 * var2.m31;
  1773.          double var23 = var1.m20 * var2.m02 + var1.m21 * var2.m12 + var1.m22 * var2.m22 + var1.m23 * var2.m32;
  1774.          double var25 = var1.m20 * var2.m03 + var1.m21 * var2.m13 + var1.m22 * var2.m23 + var1.m23 * var2.m33;
  1775.          double var27 = var1.m30 * var2.m00 + var1.m31 * var2.m10 + var1.m32 * var2.m20 + var1.m33 * var2.m30;
  1776.          double var29 = var1.m30 * var2.m01 + var1.m31 * var2.m11 + var1.m32 * var2.m21 + var1.m33 * var2.m31;
  1777.          double var31 = var1.m30 * var2.m02 + var1.m31 * var2.m12 + var1.m32 * var2.m22 + var1.m33 * var2.m32;
  1778.          double var33 = var1.m30 * var2.m03 + var1.m31 * var2.m13 + var1.m32 * var2.m23 + var1.m33 * var2.m33;
  1779.          this.m00 = var3;
  1780.          this.m01 = var5;
  1781.          this.m02 = var7;
  1782.          this.m03 = var9;
  1783.          this.m10 = var11;
  1784.          this.m11 = var13;
  1785.          this.m12 = var15;
  1786.          this.m13 = var17;
  1787.          this.m20 = var19;
  1788.          this.m21 = var21;
  1789.          this.m22 = var23;
  1790.          this.m23 = var25;
  1791.          this.m30 = var27;
  1792.          this.m31 = var29;
  1793.          this.m32 = var31;
  1794.          this.m33 = var33;
  1795.       }
  1796.  
  1797.    }
  1798.  
  1799.    public final void mulTransposeBoth(Matrix4d var1, Matrix4d var2) {
  1800.       if (this != var1 && this != var2) {
  1801.          this.m00 = var1.m00 * var2.m00 + var1.m10 * var2.m01 + var1.m20 * var2.m02 + var1.m30 * var2.m03;
  1802.          this.m01 = var1.m00 * var2.m10 + var1.m10 * var2.m11 + var1.m20 * var2.m12 + var1.m30 * var2.m13;
  1803.          this.m02 = var1.m00 * var2.m20 + var1.m10 * var2.m21 + var1.m20 * var2.m22 + var1.m30 * var2.m23;
  1804.          this.m03 = var1.m00 * var2.m30 + var1.m10 * var2.m31 + var1.m20 * var2.m32 + var1.m30 * var2.m33;
  1805.          this.m10 = var1.m01 * var2.m00 + var1.m11 * var2.m01 + var1.m21 * var2.m02 + var1.m31 * var2.m03;
  1806.          this.m11 = var1.m01 * var2.m10 + var1.m11 * var2.m11 + var1.m21 * var2.m12 + var1.m31 * var2.m13;
  1807.          this.m12 = var1.m01 * var2.m20 + var1.m11 * var2.m21 + var1.m21 * var2.m22 + var1.m31 * var2.m23;
  1808.          this.m13 = var1.m01 * var2.m30 + var1.m11 * var2.m31 + var1.m21 * var2.m32 + var1.m31 * var2.m33;
  1809.          this.m20 = var1.m02 * var2.m00 + var1.m12 * var2.m01 + var1.m22 * var2.m02 + var1.m32 * var2.m03;
  1810.          this.m21 = var1.m02 * var2.m10 + var1.m12 * var2.m11 + var1.m22 * var2.m12 + var1.m32 * var2.m13;
  1811.          this.m22 = var1.m02 * var2.m20 + var1.m12 * var2.m21 + var1.m22 * var2.m22 + var1.m32 * var2.m23;
  1812.          this.m23 = var1.m02 * var2.m30 + var1.m12 * var2.m31 + var1.m22 * var2.m32 + var1.m32 * var2.m33;
  1813.          this.m30 = var1.m03 * var2.m00 + var1.m13 * var2.m01 + var1.m23 * var2.m02 + var1.m33 * var2.m03;
  1814.          this.m31 = var1.m03 * var2.m10 + var1.m13 * var2.m11 + var1.m23 * var2.m12 + var1.m33 * var2.m13;
  1815.          this.m32 = var1.m03 * var2.m20 + var1.m13 * var2.m21 + var1.m23 * var2.m22 + var1.m33 * var2.m23;
  1816.          this.m33 = var1.m03 * var2.m30 + var1.m13 * var2.m31 + var1.m23 * var2.m32 + var1.m33 * var2.m33;
  1817.       } else {
  1818.          double var3 = var1.m00 * var2.m00 + var1.m10 * var2.m01 + var1.m20 * var2.m02 + var1.m30 * var2.m03;
  1819.          double var5 = var1.m00 * var2.m10 + var1.m10 * var2.m11 + var1.m20 * var2.m12 + var1.m30 * var2.m13;
  1820.          double var7 = var1.m00 * var2.m20 + var1.m10 * var2.m21 + var1.m20 * var2.m22 + var1.m30 * var2.m23;
  1821.          double var9 = var1.m00 * var2.m30 + var1.m10 * var2.m31 + var1.m20 * var2.m32 + var1.m30 * var2.m33;
  1822.          double var11 = var1.m01 * var2.m00 + var1.m11 * var2.m01 + var1.m21 * var2.m02 + var1.m31 * var2.m03;
  1823.          double var13 = var1.m01 * var2.m10 + var1.m11 * var2.m11 + var1.m21 * var2.m12 + var1.m31 * var2.m13;
  1824.          double var15 = var1.m01 * var2.m20 + var1.m11 * var2.m21 + var1.m21 * var2.m22 + var1.m31 * var2.m23;
  1825.          double var17 = var1.m01 * var2.m30 + var1.m11 * var2.m31 + var1.m21 * var2.m32 + var1.m31 * var2.m33;
  1826.          double var19 = var1.m02 * var2.m00 + var1.m12 * var2.m01 + var1.m22 * var2.m02 + var1.m32 * var2.m03;
  1827.          double var21 = var1.m02 * var2.m10 + var1.m12 * var2.m11 + var1.m22 * var2.m12 + var1.m32 * var2.m13;
  1828.          double var23 = var1.m02 * var2.m20 + var1.m12 * var2.m21 + var1.m22 * var2.m22 + var1.m32 * var2.m23;
  1829.          double var25 = var1.m02 * var2.m30 + var1.m12 * var2.m31 + var1.m22 * var2.m32 + var1.m32 * var2.m33;
  1830.          double var27 = var1.m03 * var2.m00 + var1.m13 * var2.m01 + var1.m23 * var2.m02 + var1.m33 * var2.m03;
  1831.          double var29 = var1.m03 * var2.m10 + var1.m13 * var2.m11 + var1.m23 * var2.m12 + var1.m33 * var2.m13;
  1832.          double var31 = var1.m03 * var2.m20 + var1.m13 * var2.m21 + var1.m23 * var2.m22 + var1.m33 * var2.m23;
  1833.          double var33 = var1.m03 * var2.m30 + var1.m13 * var2.m31 + var1.m23 * var2.m32 + var1.m33 * var2.m33;
  1834.          this.m00 = var3;
  1835.          this.m01 = var5;
  1836.          this.m02 = var7;
  1837.          this.m03 = var9;
  1838.          this.m10 = var11;
  1839.          this.m11 = var13;
  1840.          this.m12 = var15;
  1841.          this.m13 = var17;
  1842.          this.m20 = var19;
  1843.          this.m21 = var21;
  1844.          this.m22 = var23;
  1845.          this.m23 = var25;
  1846.          this.m30 = var27;
  1847.          this.m31 = var29;
  1848.          this.m32 = var31;
  1849.          this.m33 = var33;
  1850.       }
  1851.  
  1852.    }
  1853.  
  1854.    public final void mulTransposeRight(Matrix4d var1, Matrix4d var2) {
  1855.       if (this != var1 && this != var2) {
  1856.          this.m00 = var1.m00 * var2.m00 + var1.m01 * var2.m01 + var1.m02 * var2.m02 + var1.m03 * var2.m03;
  1857.          this.m01 = var1.m00 * var2.m10 + var1.m01 * var2.m11 + var1.m02 * var2.m12 + var1.m03 * var2.m13;
  1858.          this.m02 = var1.m00 * var2.m20 + var1.m01 * var2.m21 + var1.m02 * var2.m22 + var1.m03 * var2.m23;
  1859.          this.m03 = var1.m00 * var2.m30 + var1.m01 * var2.m31 + var1.m02 * var2.m32 + var1.m03 * var2.m33;
  1860.          this.m10 = var1.m10 * var2.m00 + var1.m11 * var2.m01 + var1.m12 * var2.m02 + var1.m13 * var2.m03;
  1861.          this.m11 = var1.m10 * var2.m10 + var1.m11 * var2.m11 + var1.m12 * var2.m12 + var1.m13 * var2.m13;
  1862.          this.m12 = var1.m10 * var2.m20 + var1.m11 * var2.m21 + var1.m12 * var2.m22 + var1.m13 * var2.m23;
  1863.          this.m13 = var1.m10 * var2.m30 + var1.m11 * var2.m31 + var1.m12 * var2.m32 + var1.m13 * var2.m33;
  1864.          this.m20 = var1.m20 * var2.m00 + var1.m21 * var2.m01 + var1.m22 * var2.m02 + var1.m23 * var2.m03;
  1865.          this.m21 = var1.m20 * var2.m10 + var1.m21 * var2.m11 + var1.m22 * var2.m12 + var1.m23 * var2.m13;
  1866.          this.m22 = var1.m20 * var2.m20 + var1.m21 * var2.m21 + var1.m22 * var2.m22 + var1.m23 * var2.m23;
  1867.          this.m23 = var1.m20 * var2.m30 + var1.m21 * var2.m31 + var1.m22 * var2.m32 + var1.m23 * var2.m33;
  1868.          this.m30 = var1.m30 * var2.m00 + var1.m31 * var2.m01 + var1.m32 * var2.m02 + var1.m33 * var2.m03;
  1869.          this.m31 = var1.m30 * var2.m10 + var1.m31 * var2.m11 + var1.m32 * var2.m12 + var1.m33 * var2.m13;
  1870.          this.m32 = var1.m30 * var2.m20 + var1.m31 * var2.m21 + var1.m32 * var2.m22 + var1.m33 * var2.m23;
  1871.          this.m33 = var1.m30 * var2.m30 + var1.m31 * var2.m31 + var1.m32 * var2.m32 + var1.m33 * var2.m33;
  1872.       } else {
  1873.          double var3 = var1.m00 * var2.m00 + var1.m01 * var2.m01 + var1.m02 * var2.m02 + var1.m03 * var2.m03;
  1874.          double var5 = var1.m00 * var2.m10 + var1.m01 * var2.m11 + var1.m02 * var2.m12 + var1.m03 * var2.m13;
  1875.          double var7 = var1.m00 * var2.m20 + var1.m01 * var2.m21 + var1.m02 * var2.m22 + var1.m03 * var2.m23;
  1876.          double var9 = var1.m00 * var2.m30 + var1.m01 * var2.m31 + var1.m02 * var2.m32 + var1.m03 * var2.m33;
  1877.          double var11 = var1.m10 * var2.m00 + var1.m11 * var2.m01 + var1.m12 * var2.m02 + var1.m13 * var2.m03;
  1878.          double var13 = var1.m10 * var2.m10 + var1.m11 * var2.m11 + var1.m12 * var2.m12 + var1.m13 * var2.m13;
  1879.          double var15 = var1.m10 * var2.m20 + var1.m11 * var2.m21 + var1.m12 * var2.m22 + var1.m13 * var2.m23;
  1880.          double var17 = var1.m10 * var2.m30 + var1.m11 * var2.m31 + var1.m12 * var2.m32 + var1.m13 * var2.m33;
  1881.          double var19 = var1.m20 * var2.m00 + var1.m21 * var2.m01 + var1.m22 * var2.m02 + var1.m23 * var2.m03;
  1882.          double var21 = var1.m20 * var2.m10 + var1.m21 * var2.m11 + var1.m22 * var2.m12 + var1.m23 * var2.m13;
  1883.          double var23 = var1.m20 * var2.m20 + var1.m21 * var2.m21 + var1.m22 * var2.m22 + var1.m23 * var2.m23;
  1884.          double var25 = var1.m20 * var2.m30 + var1.m21 * var2.m31 + var1.m22 * var2.m32 + var1.m23 * var2.m33;
  1885.          double var27 = var1.m30 * var2.m00 + var1.m31 * var2.m01 + var1.m32 * var2.m02 + var1.m33 * var2.m03;
  1886.          double var29 = var1.m30 * var2.m10 + var1.m31 * var2.m11 + var1.m32 * var2.m12 + var1.m33 * var2.m13;
  1887.          double var31 = var1.m30 * var2.m20 + var1.m31 * var2.m21 + var1.m32 * var2.m22 + var1.m33 * var2.m23;
  1888.          double var33 = var1.m30 * var2.m30 + var1.m31 * var2.m31 + var1.m32 * var2.m32 + var1.m33 * var2.m33;
  1889.          this.m00 = var3;
  1890.          this.m01 = var5;
  1891.          this.m02 = var7;
  1892.          this.m03 = var9;
  1893.          this.m10 = var11;
  1894.          this.m11 = var13;
  1895.          this.m12 = var15;
  1896.          this.m13 = var17;
  1897.          this.m20 = var19;
  1898.          this.m21 = var21;
  1899.          this.m22 = var23;
  1900.          this.m23 = var25;
  1901.          this.m30 = var27;
  1902.          this.m31 = var29;
  1903.          this.m32 = var31;
  1904.          this.m33 = var33;
  1905.       }
  1906.  
  1907.    }
  1908.  
  1909.    public final void mulTransposeLeft(Matrix4d var1, Matrix4d var2) {
  1910.       if (this != var1 && this != var2) {
  1911.          this.m00 = var1.m00 * var2.m00 + var1.m10 * var2.m10 + var1.m20 * var2.m20 + var1.m30 * var2.m30;
  1912.          this.m01 = var1.m00 * var2.m01 + var1.m10 * var2.m11 + var1.m20 * var2.m21 + var1.m30 * var2.m31;
  1913.          this.m02 = var1.m00 * var2.m02 + var1.m10 * var2.m12 + var1.m20 * var2.m22 + var1.m30 * var2.m32;
  1914.          this.m03 = var1.m00 * var2.m03 + var1.m10 * var2.m13 + var1.m20 * var2.m23 + var1.m30 * var2.m33;
  1915.          this.m10 = var1.m01 * var2.m00 + var1.m11 * var2.m10 + var1.m21 * var2.m20 + var1.m31 * var2.m30;
  1916.          this.m11 = var1.m01 * var2.m01 + var1.m11 * var2.m11 + var1.m21 * var2.m21 + var1.m31 * var2.m31;
  1917.          this.m12 = var1.m01 * var2.m02 + var1.m11 * var2.m12 + var1.m21 * var2.m22 + var1.m31 * var2.m32;
  1918.          this.m13 = var1.m01 * var2.m03 + var1.m11 * var2.m13 + var1.m21 * var2.m23 + var1.m31 * var2.m33;
  1919.          this.m20 = var1.m02 * var2.m00 + var1.m12 * var2.m10 + var1.m22 * var2.m20 + var1.m32 * var2.m30;
  1920.          this.m21 = var1.m02 * var2.m01 + var1.m12 * var2.m11 + var1.m22 * var2.m21 + var1.m32 * var2.m31;
  1921.          this.m22 = var1.m02 * var2.m02 + var1.m12 * var2.m12 + var1.m22 * var2.m22 + var1.m32 * var2.m32;
  1922.          this.m23 = var1.m02 * var2.m03 + var1.m12 * var2.m13 + var1.m22 * var2.m23 + var1.m32 * var2.m33;
  1923.          this.m30 = var1.m03 * var2.m00 + var1.m13 * var2.m10 + var1.m23 * var2.m20 + var1.m33 * var2.m30;
  1924.          this.m31 = var1.m03 * var2.m01 + var1.m13 * var2.m11 + var1.m23 * var2.m21 + var1.m33 * var2.m31;
  1925.          this.m32 = var1.m03 * var2.m02 + var1.m13 * var2.m12 + var1.m23 * var2.m22 + var1.m33 * var2.m32;
  1926.          this.m33 = var1.m03 * var2.m03 + var1.m13 * var2.m13 + var1.m23 * var2.m23 + var1.m33 * var2.m33;
  1927.       } else {
  1928.          double var3 = var1.m00 * var2.m00 + var1.m10 * var2.m10 + var1.m20 * var2.m20 + var1.m30 * var2.m30;
  1929.          double var5 = var1.m00 * var2.m01 + var1.m10 * var2.m11 + var1.m20 * var2.m21 + var1.m30 * var2.m31;
  1930.          double var7 = var1.m00 * var2.m02 + var1.m10 * var2.m12 + var1.m20 * var2.m22 + var1.m30 * var2.m32;
  1931.          double var9 = var1.m00 * var2.m03 + var1.m10 * var2.m13 + var1.m20 * var2.m23 + var1.m30 * var2.m33;
  1932.          double var11 = var1.m01 * var2.m00 + var1.m11 * var2.m10 + var1.m21 * var2.m20 + var1.m31 * var2.m30;
  1933.          double var13 = var1.m01 * var2.m01 + var1.m11 * var2.m11 + var1.m21 * var2.m21 + var1.m31 * var2.m31;
  1934.          double var15 = var1.m01 * var2.m02 + var1.m11 * var2.m12 + var1.m21 * var2.m22 + var1.m31 * var2.m32;
  1935.          double var17 = var1.m01 * var2.m03 + var1.m11 * var2.m13 + var1.m21 * var2.m23 + var1.m31 * var2.m33;
  1936.          double var19 = var1.m02 * var2.m00 + var1.m12 * var2.m10 + var1.m22 * var2.m20 + var1.m32 * var2.m30;
  1937.          double var21 = var1.m02 * var2.m01 + var1.m12 * var2.m11 + var1.m22 * var2.m21 + var1.m32 * var2.m31;
  1938.          double var23 = var1.m02 * var2.m02 + var1.m12 * var2.m12 + var1.m22 * var2.m22 + var1.m32 * var2.m32;
  1939.          double var25 = var1.m02 * var2.m03 + var1.m12 * var2.m13 + var1.m22 * var2.m23 + var1.m32 * var2.m33;
  1940.          double var27 = var1.m03 * var2.m00 + var1.m13 * var2.m10 + var1.m23 * var2.m20 + var1.m33 * var2.m30;
  1941.          double var29 = var1.m03 * var2.m01 + var1.m13 * var2.m11 + var1.m23 * var2.m21 + var1.m33 * var2.m31;
  1942.          double var31 = var1.m03 * var2.m02 + var1.m13 * var2.m12 + var1.m23 * var2.m22 + var1.m33 * var2.m32;
  1943.          double var33 = var1.m03 * var2.m03 + var1.m13 * var2.m13 + var1.m23 * var2.m23 + var1.m33 * var2.m33;
  1944.          this.m00 = var3;
  1945.          this.m01 = var5;
  1946.          this.m02 = var7;
  1947.          this.m03 = var9;
  1948.          this.m10 = var11;
  1949.          this.m11 = var13;
  1950.          this.m12 = var15;
  1951.          this.m13 = var17;
  1952.          this.m20 = var19;
  1953.          this.m21 = var21;
  1954.          this.m22 = var23;
  1955.          this.m23 = var25;
  1956.          this.m30 = var27;
  1957.          this.m31 = var29;
  1958.          this.m32 = var31;
  1959.          this.m33 = var33;
  1960.       }
  1961.  
  1962.    }
  1963.  
  1964.    public boolean equals(Matrix4d var1) {
  1965.       try {
  1966.          return this.m00 == var1.m00 && this.m01 == var1.m01 && this.m02 == var1.m02 && this.m03 == var1.m03 && this.m10 == var1.m10 && this.m11 == var1.m11 && this.m12 == var1.m12 && this.m13 == var1.m13 && this.m20 == var1.m20 && this.m21 == var1.m21 && this.m22 == var1.m22 && this.m23 == var1.m23 && this.m30 == var1.m30 && this.m31 == var1.m31 && this.m32 == var1.m32 && this.m33 == var1.m33;
  1967.       } catch (NullPointerException var3) {
  1968.          return false;
  1969.       }
  1970.    }
  1971.  
  1972.    public boolean equals(Object var1) {
  1973.       try {
  1974.          Matrix4d var2 = (Matrix4d)var1;
  1975.          return this.m00 == var2.m00 && this.m01 == var2.m01 && this.m02 == var2.m02 && this.m03 == var2.m03 && this.m10 == var2.m10 && this.m11 == var2.m11 && this.m12 == var2.m12 && this.m13 == var2.m13 && this.m20 == var2.m20 && this.m21 == var2.m21 && this.m22 == var2.m22 && this.m23 == var2.m23 && this.m30 == var2.m30 && this.m31 == var2.m31 && this.m32 == var2.m32 && this.m33 == var2.m33;
  1976.       } catch (ClassCastException var4) {
  1977.          return false;
  1978.       } catch (NullPointerException var5) {
  1979.          return false;
  1980.       }
  1981.    }
  1982.  
  1983.    /** @deprecated */
  1984.    public boolean epsilonEquals(Matrix4d var1, float var2) {
  1985.       return this.epsilonEquals(var1, (double)var2);
  1986.    }
  1987.  
  1988.    public boolean epsilonEquals(Matrix4d var1, double var2) {
  1989.       double var4 = this.m00 - var1.m00;
  1990.       if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  1991.          return false;
  1992.       } else {
  1993.          var4 = this.m01 - var1.m01;
  1994.          if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  1995.             return false;
  1996.          } else {
  1997.             var4 = this.m02 - var1.m02;
  1998.             if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  1999.                return false;
  2000.             } else {
  2001.                var4 = this.m03 - var1.m03;
  2002.                if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2003.                   return false;
  2004.                } else {
  2005.                   var4 = this.m10 - var1.m10;
  2006.                   if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2007.                      return false;
  2008.                   } else {
  2009.                      var4 = this.m11 - var1.m11;
  2010.                      if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2011.                         return false;
  2012.                      } else {
  2013.                         var4 = this.m12 - var1.m12;
  2014.                         if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2015.                            return false;
  2016.                         } else {
  2017.                            var4 = this.m13 - var1.m13;
  2018.                            if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2019.                               return false;
  2020.                            } else {
  2021.                               var4 = this.m20 - var1.m20;
  2022.                               if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2023.                                  return false;
  2024.                               } else {
  2025.                                  var4 = this.m21 - var1.m21;
  2026.                                  if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2027.                                     return false;
  2028.                                  } else {
  2029.                                     var4 = this.m22 - var1.m22;
  2030.                                     if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2031.                                        return false;
  2032.                                     } else {
  2033.                                        var4 = this.m23 - var1.m23;
  2034.                                        if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2035.                                           return false;
  2036.                                        } else {
  2037.                                           var4 = this.m30 - var1.m30;
  2038.                                           if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2039.                                              return false;
  2040.                                           } else {
  2041.                                              var4 = this.m31 - var1.m31;
  2042.                                              if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2043.                                                 return false;
  2044.                                              } else {
  2045.                                                 var4 = this.m32 - var1.m32;
  2046.                                                 if ((var4 < (double)0.0F ? -var4 : var4) > var2) {
  2047.                                                    return false;
  2048.                                                 } else {
  2049.                                                    var4 = this.m33 - var1.m33;
  2050.                                                    return !((var4 < (double)0.0F ? -var4 : var4) > var2);
  2051.                                                 }
  2052.                                              }
  2053.                                           }
  2054.                                        }
  2055.                                     }
  2056.                                  }
  2057.                               }
  2058.                            }
  2059.                         }
  2060.                      }
  2061.                   }
  2062.                }
  2063.             }
  2064.          }
  2065.       }
  2066.    }
  2067.  
  2068.    public int hashCode() {
  2069.       long var1 = 1L;
  2070.       var1 = 31L * var1 + Double.doubleToLongBits(this.m00);
  2071.       var1 = 31L * var1 + Double.doubleToLongBits(this.m01);
  2072.       var1 = 31L * var1 + Double.doubleToLongBits(this.m02);
  2073.       var1 = 31L * var1 + Double.doubleToLongBits(this.m03);
  2074.       var1 = 31L * var1 + Double.doubleToLongBits(this.m10);
  2075.       var1 = 31L * var1 + Double.doubleToLongBits(this.m11);
  2076.       var1 = 31L * var1 + Double.doubleToLongBits(this.m12);
  2077.       var1 = 31L * var1 + Double.doubleToLongBits(this.m13);
  2078.       var1 = 31L * var1 + Double.doubleToLongBits(this.m20);
  2079.       var1 = 31L * var1 + Double.doubleToLongBits(this.m21);
  2080.       var1 = 31L * var1 + Double.doubleToLongBits(this.m22);
  2081.       var1 = 31L * var1 + Double.doubleToLongBits(this.m23);
  2082.       var1 = 31L * var1 + Double.doubleToLongBits(this.m30);
  2083.       var1 = 31L * var1 + Double.doubleToLongBits(this.m31);
  2084.       var1 = 31L * var1 + Double.doubleToLongBits(this.m32);
  2085.       var1 = 31L * var1 + Double.doubleToLongBits(this.m33);
  2086.       return (int)(var1 ^ var1 >> 32);
  2087.    }
  2088.  
  2089.    public final void transform(Tuple4d var1, Tuple4d var2) {
  2090.       double var3 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z + this.m03 * var1.w;
  2091.       double var5 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z + this.m13 * var1.w;
  2092.       double var7 = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z + this.m23 * var1.w;
  2093.       var2.w = this.m30 * var1.x + this.m31 * var1.y + this.m32 * var1.z + this.m33 * var1.w;
  2094.       var2.x = var3;
  2095.       var2.y = var5;
  2096.       var2.z = var7;
  2097.    }
  2098.  
  2099.    public final void transform(Tuple4d var1) {
  2100.       double var2 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z + this.m03 * var1.w;
  2101.       double var4 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z + this.m13 * var1.w;
  2102.       double var6 = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z + this.m23 * var1.w;
  2103.       var1.w = this.m30 * var1.x + this.m31 * var1.y + this.m32 * var1.z + this.m33 * var1.w;
  2104.       var1.x = var2;
  2105.       var1.y = var4;
  2106.       var1.z = var6;
  2107.    }
  2108.  
  2109.    public final void transform(Tuple4f var1, Tuple4f var2) {
  2110.       float var3 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z + this.m03 * (double)var1.w);
  2111.       float var4 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z + this.m13 * (double)var1.w);
  2112.       float var5 = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z + this.m23 * (double)var1.w);
  2113.       var2.w = (float)(this.m30 * (double)var1.x + this.m31 * (double)var1.y + this.m32 * (double)var1.z + this.m33 * (double)var1.w);
  2114.       var2.x = var3;
  2115.       var2.y = var4;
  2116.       var2.z = var5;
  2117.    }
  2118.  
  2119.    public final void transform(Tuple4f var1) {
  2120.       float var2 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z + this.m03 * (double)var1.w);
  2121.       float var3 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z + this.m13 * (double)var1.w);
  2122.       float var4 = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z + this.m23 * (double)var1.w);
  2123.       var1.w = (float)(this.m30 * (double)var1.x + this.m31 * (double)var1.y + this.m32 * (double)var1.z + this.m33 * (double)var1.w);
  2124.       var1.x = var2;
  2125.       var1.y = var3;
  2126.       var1.z = var4;
  2127.    }
  2128.  
  2129.    public final void transform(Point3d var1, Point3d var2) {
  2130.       double var3 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z + this.m03;
  2131.       double var5 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z + this.m13;
  2132.       var2.z = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z + this.m23;
  2133.       var2.x = var3;
  2134.       var2.y = var5;
  2135.    }
  2136.  
  2137.    public final void transform(Point3d var1) {
  2138.       double var2 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z + this.m03;
  2139.       double var4 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z + this.m13;
  2140.       var1.z = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z + this.m23;
  2141.       var1.x = var2;
  2142.       var1.y = var4;
  2143.    }
  2144.  
  2145.    public final void transform(Point3f var1, Point3f var2) {
  2146.       float var3 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z + this.m03);
  2147.       float var4 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z + this.m13);
  2148.       var2.z = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z + this.m23);
  2149.       var2.x = var3;
  2150.       var2.y = var4;
  2151.    }
  2152.  
  2153.    public final void transform(Point3f var1) {
  2154.       float var2 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z + this.m03);
  2155.       float var3 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z + this.m13);
  2156.       var1.z = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z + this.m23);
  2157.       var1.x = var2;
  2158.       var1.y = var3;
  2159.    }
  2160.  
  2161.    public final void transform(Vector3d var1, Vector3d var2) {
  2162.       double var3 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z;
  2163.       double var5 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z;
  2164.       var2.z = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z;
  2165.       var2.x = var3;
  2166.       var2.y = var5;
  2167.    }
  2168.  
  2169.    public final void transform(Vector3d var1) {
  2170.       double var2 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z;
  2171.       double var4 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z;
  2172.       var1.z = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z;
  2173.       var1.x = var2;
  2174.       var1.y = var4;
  2175.    }
  2176.  
  2177.    public final void transform(Vector3f var1, Vector3f var2) {
  2178.       float var3 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z);
  2179.       float var4 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z);
  2180.       var2.z = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z);
  2181.       var2.x = var3;
  2182.       var2.y = var4;
  2183.    }
  2184.  
  2185.    public final void transform(Vector3f var1) {
  2186.       float var2 = (float)(this.m00 * (double)var1.x + this.m01 * (double)var1.y + this.m02 * (double)var1.z);
  2187.       float var3 = (float)(this.m10 * (double)var1.x + this.m11 * (double)var1.y + this.m12 * (double)var1.z);
  2188.       var1.z = (float)(this.m20 * (double)var1.x + this.m21 * (double)var1.y + this.m22 * (double)var1.z);
  2189.       var1.x = var2;
  2190.       var1.y = var3;
  2191.    }
  2192.  
  2193.    public final void setRotation(Matrix3d var1) {
  2194.       double[] var2 = new double[9];
  2195.       double[] var3 = new double[3];
  2196.       this.getScaleRotate(var3, var2);
  2197.       this.m00 = var1.m00 * var3[0];
  2198.       this.m01 = var1.m01 * var3[1];
  2199.       this.m02 = var1.m02 * var3[2];
  2200.       this.m10 = var1.m10 * var3[0];
  2201.       this.m11 = var1.m11 * var3[1];
  2202.       this.m12 = var1.m12 * var3[2];
  2203.       this.m20 = var1.m20 * var3[0];
  2204.       this.m21 = var1.m21 * var3[1];
  2205.       this.m22 = var1.m22 * var3[2];
  2206.    }
  2207.  
  2208.    public final void setRotation(Matrix3f var1) {
  2209.       double[] var2 = new double[9];
  2210.       double[] var3 = new double[3];
  2211.       this.getScaleRotate(var3, var2);
  2212.       this.m00 = (double)var1.m00 * var3[0];
  2213.       this.m01 = (double)var1.m01 * var3[1];
  2214.       this.m02 = (double)var1.m02 * var3[2];
  2215.       this.m10 = (double)var1.m10 * var3[0];
  2216.       this.m11 = (double)var1.m11 * var3[1];
  2217.       this.m12 = (double)var1.m12 * var3[2];
  2218.       this.m20 = (double)var1.m20 * var3[0];
  2219.       this.m21 = (double)var1.m21 * var3[1];
  2220.       this.m22 = (double)var1.m22 * var3[2];
  2221.    }
  2222.  
  2223.    public final void setRotation(Quat4f var1) {
  2224.       double[] var2 = new double[9];
  2225.       double[] var3 = new double[3];
  2226.       this.getScaleRotate(var3, var2);
  2227.       this.m00 = ((double)1.0F - (double)(2.0F * var1.y * var1.y) - (double)(2.0F * var1.z * var1.z)) * var3[0];
  2228.       this.m10 = (double)2.0F * (double)(var1.x * var1.y + var1.w * var1.z) * var3[0];
  2229.       this.m20 = (double)2.0F * (double)(var1.x * var1.z - var1.w * var1.y) * var3[0];
  2230.       this.m01 = (double)2.0F * (double)(var1.x * var1.y - var1.w * var1.z) * var3[1];
  2231.       this.m11 = ((double)1.0F - (double)(2.0F * var1.x * var1.x) - (double)(2.0F * var1.z * var1.z)) * var3[1];
  2232.       this.m21 = (double)2.0F * (double)(var1.y * var1.z + var1.w * var1.x) * var3[1];
  2233.       this.m02 = (double)2.0F * (double)(var1.x * var1.z + var1.w * var1.y) * var3[2];
  2234.       this.m12 = (double)2.0F * (double)(var1.y * var1.z - var1.w * var1.x) * var3[2];
  2235.       this.m22 = ((double)1.0F - (double)(2.0F * var1.x * var1.x) - (double)(2.0F * var1.y * var1.y)) * var3[2];
  2236.    }
  2237.  
  2238.    public final void setRotation(Quat4d var1) {
  2239.       double[] var2 = new double[9];
  2240.       double[] var3 = new double[3];
  2241.       this.getScaleRotate(var3, var2);
  2242.       this.m00 = ((double)1.0F - (double)2.0F * var1.y * var1.y - (double)2.0F * var1.z * var1.z) * var3[0];
  2243.       this.m10 = (double)2.0F * (var1.x * var1.y + var1.w * var1.z) * var3[0];
  2244.       this.m20 = (double)2.0F * (var1.x * var1.z - var1.w * var1.y) * var3[0];
  2245.       this.m01 = (double)2.0F * (var1.x * var1.y - var1.w * var1.z) * var3[1];
  2246.       this.m11 = ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.z * var1.z) * var3[1];
  2247.       this.m21 = (double)2.0F * (var1.y * var1.z + var1.w * var1.x) * var3[1];
  2248.       this.m02 = (double)2.0F * (var1.x * var1.z + var1.w * var1.y) * var3[2];
  2249.       this.m12 = (double)2.0F * (var1.y * var1.z - var1.w * var1.x) * var3[2];
  2250.       this.m22 = ((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.y * var1.y) * var3[2];
  2251.    }
  2252.  
  2253.    public final void setRotation(AxisAngle4d var1) {
  2254.       double[] var2 = new double[9];
  2255.       double[] var3 = new double[3];
  2256.       this.getScaleRotate(var3, var2);
  2257.       double var4 = (double)1.0F / Math.sqrt(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z);
  2258.       double var6 = var1.x * var4;
  2259.       double var8 = var1.y * var4;
  2260.       double var10 = var1.z * var4;
  2261.       double var12 = Math.sin(var1.angle);
  2262.       double var14 = Math.cos(var1.angle);
  2263.       double var16 = (double)1.0F - var14;
  2264.       double var18 = var1.x * var1.z;
  2265.       double var20 = var1.x * var1.y;
  2266.       double var22 = var1.y * var1.z;
  2267.       this.m00 = (var16 * var6 * var6 + var14) * var3[0];
  2268.       this.m01 = (var16 * var20 - var12 * var10) * var3[1];
  2269.       this.m02 = (var16 * var18 + var12 * var8) * var3[2];
  2270.       this.m10 = (var16 * var20 + var12 * var10) * var3[0];
  2271.       this.m11 = (var16 * var8 * var8 + var14) * var3[1];
  2272.       this.m12 = (var16 * var22 - var12 * var6) * var3[2];
  2273.       this.m20 = (var16 * var18 - var12 * var8) * var3[0];
  2274.       this.m21 = (var16 * var22 + var12 * var6) * var3[1];
  2275.       this.m22 = (var16 * var10 * var10 + var14) * var3[2];
  2276.    }
  2277.  
  2278.    public final void setZero() {
  2279.       this.m00 = (double)0.0F;
  2280.       this.m01 = (double)0.0F;
  2281.       this.m02 = (double)0.0F;
  2282.       this.m03 = (double)0.0F;
  2283.       this.m10 = (double)0.0F;
  2284.       this.m11 = (double)0.0F;
  2285.       this.m12 = (double)0.0F;
  2286.       this.m13 = (double)0.0F;
  2287.       this.m20 = (double)0.0F;
  2288.       this.m21 = (double)0.0F;
  2289.       this.m22 = (double)0.0F;
  2290.       this.m23 = (double)0.0F;
  2291.       this.m30 = (double)0.0F;
  2292.       this.m31 = (double)0.0F;
  2293.       this.m32 = (double)0.0F;
  2294.       this.m33 = (double)0.0F;
  2295.    }
  2296.  
  2297.    public final void negate() {
  2298.       this.m00 = -this.m00;
  2299.       this.m01 = -this.m01;
  2300.       this.m02 = -this.m02;
  2301.       this.m03 = -this.m03;
  2302.       this.m10 = -this.m10;
  2303.       this.m11 = -this.m11;
  2304.       this.m12 = -this.m12;
  2305.       this.m13 = -this.m13;
  2306.       this.m20 = -this.m20;
  2307.       this.m21 = -this.m21;
  2308.       this.m22 = -this.m22;
  2309.       this.m23 = -this.m23;
  2310.       this.m30 = -this.m30;
  2311.       this.m31 = -this.m31;
  2312.       this.m32 = -this.m32;
  2313.       this.m33 = -this.m33;
  2314.    }
  2315.  
  2316.    public final void negate(Matrix4d var1) {
  2317.       this.m00 = -var1.m00;
  2318.       this.m01 = -var1.m01;
  2319.       this.m02 = -var1.m02;
  2320.       this.m03 = -var1.m03;
  2321.       this.m10 = -var1.m10;
  2322.       this.m11 = -var1.m11;
  2323.       this.m12 = -var1.m12;
  2324.       this.m13 = -var1.m13;
  2325.       this.m20 = -var1.m20;
  2326.       this.m21 = -var1.m21;
  2327.       this.m22 = -var1.m22;
  2328.       this.m23 = -var1.m23;
  2329.       this.m30 = -var1.m30;
  2330.       this.m31 = -var1.m31;
  2331.       this.m32 = -var1.m32;
  2332.       this.m33 = -var1.m33;
  2333.    }
  2334.  
  2335.    private final void getScaleRotate(double[] var1, double[] var2) {
  2336.       double[] var3 = new double[]{this.m00, this.m01, this.m02, this.m10, this.m11, this.m12, this.m20, this.m21, this.m22};
  2337.       Matrix3d.compute_svd(var3, var1, var2);
  2338.    }
  2339.  
  2340.    public Object clone() {
  2341.       Object var1 = null;
  2342.  
  2343.       try {
  2344.          Matrix4d var4 = (Matrix4d)super.clone();
  2345.          return var4;
  2346.       } catch (CloneNotSupportedException var3) {
  2347.          throw new InternalError();
  2348.       }
  2349.    }
  2350. }
  2351.