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 / Matrix3f.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-19  |  20.6 KB  |  1,332 lines

  1. package javax.vecmath;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Matrix3f implements Serializable, Cloneable {
  6.    static final long serialVersionUID = 329697160112089834L;
  7.    public float m00;
  8.    public float m01;
  9.    public float m02;
  10.    public float m10;
  11.    public float m11;
  12.    public float m12;
  13.    public float m20;
  14.    public float m21;
  15.    public float m22;
  16.    private static final double EPS = 1.0E-8;
  17.  
  18.    public Matrix3f(float var1, float var2, float var3, float var4, float var5, float var6, float var7, float var8, float var9) {
  19.       this.m00 = var1;
  20.       this.m01 = var2;
  21.       this.m02 = var3;
  22.       this.m10 = var4;
  23.       this.m11 = var5;
  24.       this.m12 = var6;
  25.       this.m20 = var7;
  26.       this.m21 = var8;
  27.       this.m22 = var9;
  28.    }
  29.  
  30.    public Matrix3f(float[] var1) {
  31.       this.m00 = var1[0];
  32.       this.m01 = var1[1];
  33.       this.m02 = var1[2];
  34.       this.m10 = var1[3];
  35.       this.m11 = var1[4];
  36.       this.m12 = var1[5];
  37.       this.m20 = var1[6];
  38.       this.m21 = var1[7];
  39.       this.m22 = var1[8];
  40.    }
  41.  
  42.    public Matrix3f(Matrix3d var1) {
  43.       this.m00 = (float)var1.m00;
  44.       this.m01 = (float)var1.m01;
  45.       this.m02 = (float)var1.m02;
  46.       this.m10 = (float)var1.m10;
  47.       this.m11 = (float)var1.m11;
  48.       this.m12 = (float)var1.m12;
  49.       this.m20 = (float)var1.m20;
  50.       this.m21 = (float)var1.m21;
  51.       this.m22 = (float)var1.m22;
  52.    }
  53.  
  54.    public Matrix3f(Matrix3f var1) {
  55.       this.m00 = var1.m00;
  56.       this.m01 = var1.m01;
  57.       this.m02 = var1.m02;
  58.       this.m10 = var1.m10;
  59.       this.m11 = var1.m11;
  60.       this.m12 = var1.m12;
  61.       this.m20 = var1.m20;
  62.       this.m21 = var1.m21;
  63.       this.m22 = var1.m22;
  64.    }
  65.  
  66.    public Matrix3f() {
  67.       this.m00 = 0.0F;
  68.       this.m01 = 0.0F;
  69.       this.m02 = 0.0F;
  70.       this.m10 = 0.0F;
  71.       this.m11 = 0.0F;
  72.       this.m12 = 0.0F;
  73.       this.m20 = 0.0F;
  74.       this.m21 = 0.0F;
  75.       this.m22 = 0.0F;
  76.    }
  77.  
  78.    public String toString() {
  79.       return this.m00 + ", " + this.m01 + ", " + this.m02 + "\n" + this.m10 + ", " + this.m11 + ", " + this.m12 + "\n" + this.m20 + ", " + this.m21 + ", " + this.m22 + "\n";
  80.    }
  81.  
  82.    public final void setIdentity() {
  83.       this.m00 = 1.0F;
  84.       this.m01 = 0.0F;
  85.       this.m02 = 0.0F;
  86.       this.m10 = 0.0F;
  87.       this.m11 = 1.0F;
  88.       this.m12 = 0.0F;
  89.       this.m20 = 0.0F;
  90.       this.m21 = 0.0F;
  91.       this.m22 = 1.0F;
  92.    }
  93.  
  94.    public final void setScale(float var1) {
  95.       double[] var2 = new double[9];
  96.       double[] var3 = new double[3];
  97.       this.getScaleRotate(var3, var2);
  98.       this.m00 = (float)(var2[0] * (double)var1);
  99.       this.m01 = (float)(var2[1] * (double)var1);
  100.       this.m02 = (float)(var2[2] * (double)var1);
  101.       this.m10 = (float)(var2[3] * (double)var1);
  102.       this.m11 = (float)(var2[4] * (double)var1);
  103.       this.m12 = (float)(var2[5] * (double)var1);
  104.       this.m20 = (float)(var2[6] * (double)var1);
  105.       this.m21 = (float)(var2[7] * (double)var1);
  106.       this.m22 = (float)(var2[8] * (double)var1);
  107.    }
  108.  
  109.    public final void setElement(int var1, int var2, float var3) {
  110.       switch (var1) {
  111.          case 0:
  112.             switch (var2) {
  113.                case 0:
  114.                   this.m00 = var3;
  115.                   return;
  116.                case 1:
  117.                   this.m01 = var3;
  118.                   return;
  119.                case 2:
  120.                   this.m02 = var3;
  121.                   return;
  122.                default:
  123.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f0"));
  124.             }
  125.          case 1:
  126.             switch (var2) {
  127.                case 0:
  128.                   this.m10 = var3;
  129.                   return;
  130.                case 1:
  131.                   this.m11 = var3;
  132.                   return;
  133.                case 2:
  134.                   this.m12 = var3;
  135.                   return;
  136.                default:
  137.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f0"));
  138.             }
  139.          case 2:
  140.             switch (var2) {
  141.                case 0:
  142.                   this.m20 = var3;
  143.                   return;
  144.                case 1:
  145.                   this.m21 = var3;
  146.                   return;
  147.                case 2:
  148.                   this.m22 = var3;
  149.                   return;
  150.                default:
  151.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f0"));
  152.             }
  153.          default:
  154.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f0"));
  155.       }
  156.    }
  157.  
  158.    public final void getRow(int var1, Vector3f var2) {
  159.       if (var1 == 0) {
  160.          var2.x = this.m00;
  161.          var2.y = this.m01;
  162.          var2.z = this.m02;
  163.       } else if (var1 == 1) {
  164.          var2.x = this.m10;
  165.          var2.y = this.m11;
  166.          var2.z = this.m12;
  167.       } else {
  168.          if (var1 != 2) {
  169.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f1"));
  170.          }
  171.  
  172.          var2.x = this.m20;
  173.          var2.y = this.m21;
  174.          var2.z = this.m22;
  175.       }
  176.  
  177.    }
  178.  
  179.    public final void getRow(int var1, float[] var2) {
  180.       if (var1 == 0) {
  181.          var2[0] = this.m00;
  182.          var2[1] = this.m01;
  183.          var2[2] = this.m02;
  184.       } else if (var1 == 1) {
  185.          var2[0] = this.m10;
  186.          var2[1] = this.m11;
  187.          var2[2] = this.m12;
  188.       } else {
  189.          if (var1 != 2) {
  190.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f1"));
  191.          }
  192.  
  193.          var2[0] = this.m20;
  194.          var2[1] = this.m21;
  195.          var2[2] = this.m22;
  196.       }
  197.  
  198.    }
  199.  
  200.    public final void getColumn(int var1, Vector3f var2) {
  201.       if (var1 == 0) {
  202.          var2.x = this.m00;
  203.          var2.y = this.m10;
  204.          var2.z = this.m20;
  205.       } else if (var1 == 1) {
  206.          var2.x = this.m01;
  207.          var2.y = this.m11;
  208.          var2.z = this.m21;
  209.       } else {
  210.          if (var1 != 2) {
  211.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f3"));
  212.          }
  213.  
  214.          var2.x = this.m02;
  215.          var2.y = this.m12;
  216.          var2.z = this.m22;
  217.       }
  218.  
  219.    }
  220.  
  221.    public final void getColumn(int var1, float[] var2) {
  222.       if (var1 == 0) {
  223.          var2[0] = this.m00;
  224.          var2[1] = this.m10;
  225.          var2[2] = this.m20;
  226.       } else if (var1 == 1) {
  227.          var2[0] = this.m01;
  228.          var2[1] = this.m11;
  229.          var2[2] = this.m21;
  230.       } else {
  231.          if (var1 != 2) {
  232.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f3"));
  233.          }
  234.  
  235.          var2[0] = this.m02;
  236.          var2[1] = this.m12;
  237.          var2[2] = this.m22;
  238.       }
  239.  
  240.    }
  241.  
  242.    public final float getElement(int var1, int var2) {
  243.       switch (var1) {
  244.          case 0:
  245.             switch (var2) {
  246.                case 0:
  247.                   return this.m00;
  248.                case 1:
  249.                   return this.m01;
  250.                case 2:
  251.                   return this.m02;
  252.                default:
  253.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f5"));
  254.             }
  255.          case 1:
  256.             switch (var2) {
  257.                case 0:
  258.                   return this.m10;
  259.                case 1:
  260.                   return this.m11;
  261.                case 2:
  262.                   return this.m12;
  263.                default:
  264.                   throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f5"));
  265.             }
  266.          case 2:
  267.             switch (var2) {
  268.                case 0:
  269.                   return this.m20;
  270.                case 1:
  271.                   return this.m21;
  272.                case 2:
  273.                   return this.m22;
  274.             }
  275.       }
  276.  
  277.       throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f5"));
  278.    }
  279.  
  280.    public final void setRow(int var1, float var2, float var3, float var4) {
  281.       switch (var1) {
  282.          case 0:
  283.             this.m00 = var2;
  284.             this.m01 = var3;
  285.             this.m02 = var4;
  286.             break;
  287.          case 1:
  288.             this.m10 = var2;
  289.             this.m11 = var3;
  290.             this.m12 = var4;
  291.             break;
  292.          case 2:
  293.             this.m20 = var2;
  294.             this.m21 = var3;
  295.             this.m22 = var4;
  296.             break;
  297.          default:
  298.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f6"));
  299.       }
  300.  
  301.    }
  302.  
  303.    public final void setRow(int var1, Vector3f var2) {
  304.       switch (var1) {
  305.          case 0:
  306.             this.m00 = var2.x;
  307.             this.m01 = var2.y;
  308.             this.m02 = var2.z;
  309.             break;
  310.          case 1:
  311.             this.m10 = var2.x;
  312.             this.m11 = var2.y;
  313.             this.m12 = var2.z;
  314.             break;
  315.          case 2:
  316.             this.m20 = var2.x;
  317.             this.m21 = var2.y;
  318.             this.m22 = var2.z;
  319.             break;
  320.          default:
  321.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f6"));
  322.       }
  323.  
  324.    }
  325.  
  326.    public final void setRow(int var1, float[] var2) {
  327.       switch (var1) {
  328.          case 0:
  329.             this.m00 = var2[0];
  330.             this.m01 = var2[1];
  331.             this.m02 = var2[2];
  332.             break;
  333.          case 1:
  334.             this.m10 = var2[0];
  335.             this.m11 = var2[1];
  336.             this.m12 = var2[2];
  337.             break;
  338.          case 2:
  339.             this.m20 = var2[0];
  340.             this.m21 = var2[1];
  341.             this.m22 = var2[2];
  342.             break;
  343.          default:
  344.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f6"));
  345.       }
  346.  
  347.    }
  348.  
  349.    public final void setColumn(int var1, float var2, float var3, float var4) {
  350.       switch (var1) {
  351.          case 0:
  352.             this.m00 = var2;
  353.             this.m10 = var3;
  354.             this.m20 = var4;
  355.             break;
  356.          case 1:
  357.             this.m01 = var2;
  358.             this.m11 = var3;
  359.             this.m21 = var4;
  360.             break;
  361.          case 2:
  362.             this.m02 = var2;
  363.             this.m12 = var3;
  364.             this.m22 = var4;
  365.             break;
  366.          default:
  367.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f9"));
  368.       }
  369.  
  370.    }
  371.  
  372.    public final void setColumn(int var1, Vector3f var2) {
  373.       switch (var1) {
  374.          case 0:
  375.             this.m00 = var2.x;
  376.             this.m10 = var2.y;
  377.             this.m20 = var2.z;
  378.             break;
  379.          case 1:
  380.             this.m01 = var2.x;
  381.             this.m11 = var2.y;
  382.             this.m21 = var2.z;
  383.             break;
  384.          case 2:
  385.             this.m02 = var2.x;
  386.             this.m12 = var2.y;
  387.             this.m22 = var2.z;
  388.             break;
  389.          default:
  390.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f9"));
  391.       }
  392.  
  393.    }
  394.  
  395.    public final void setColumn(int var1, float[] var2) {
  396.       switch (var1) {
  397.          case 0:
  398.             this.m00 = var2[0];
  399.             this.m10 = var2[1];
  400.             this.m20 = var2[2];
  401.             break;
  402.          case 1:
  403.             this.m01 = var2[0];
  404.             this.m11 = var2[1];
  405.             this.m21 = var2[2];
  406.             break;
  407.          case 2:
  408.             this.m02 = var2[0];
  409.             this.m12 = var2[1];
  410.             this.m22 = var2[2];
  411.             break;
  412.          default:
  413.             throw new ArrayIndexOutOfBoundsException(VecMathI18N.getString("Matrix3f9"));
  414.       }
  415.  
  416.    }
  417.  
  418.    public final float getScale() {
  419.       double[] var1 = new double[9];
  420.       double[] var2 = new double[3];
  421.       this.getScaleRotate(var2, var1);
  422.       return (float)Matrix3d.max3(var2);
  423.    }
  424.  
  425.    public final void add(float var1) {
  426.       this.m00 += var1;
  427.       this.m01 += var1;
  428.       this.m02 += var1;
  429.       this.m10 += var1;
  430.       this.m11 += var1;
  431.       this.m12 += var1;
  432.       this.m20 += var1;
  433.       this.m21 += var1;
  434.       this.m22 += var1;
  435.    }
  436.  
  437.    public final void add(float var1, Matrix3f var2) {
  438.       this.m00 = var2.m00 + var1;
  439.       this.m01 = var2.m01 + var1;
  440.       this.m02 = var2.m02 + var1;
  441.       this.m10 = var2.m10 + var1;
  442.       this.m11 = var2.m11 + var1;
  443.       this.m12 = var2.m12 + var1;
  444.       this.m20 = var2.m20 + var1;
  445.       this.m21 = var2.m21 + var1;
  446.       this.m22 = var2.m22 + var1;
  447.    }
  448.  
  449.    public final void add(Matrix3f var1, Matrix3f var2) {
  450.       this.m00 = var1.m00 + var2.m00;
  451.       this.m01 = var1.m01 + var2.m01;
  452.       this.m02 = var1.m02 + var2.m02;
  453.       this.m10 = var1.m10 + var2.m10;
  454.       this.m11 = var1.m11 + var2.m11;
  455.       this.m12 = var1.m12 + var2.m12;
  456.       this.m20 = var1.m20 + var2.m20;
  457.       this.m21 = var1.m21 + var2.m21;
  458.       this.m22 = var1.m22 + var2.m22;
  459.    }
  460.  
  461.    public final void add(Matrix3f var1) {
  462.       this.m00 += var1.m00;
  463.       this.m01 += var1.m01;
  464.       this.m02 += var1.m02;
  465.       this.m10 += var1.m10;
  466.       this.m11 += var1.m11;
  467.       this.m12 += var1.m12;
  468.       this.m20 += var1.m20;
  469.       this.m21 += var1.m21;
  470.       this.m22 += var1.m22;
  471.    }
  472.  
  473.    public final void sub(Matrix3f var1, Matrix3f var2) {
  474.       this.m00 = var1.m00 - var2.m00;
  475.       this.m01 = var1.m01 - var2.m01;
  476.       this.m02 = var1.m02 - var2.m02;
  477.       this.m10 = var1.m10 - var2.m10;
  478.       this.m11 = var1.m11 - var2.m11;
  479.       this.m12 = var1.m12 - var2.m12;
  480.       this.m20 = var1.m20 - var2.m20;
  481.       this.m21 = var1.m21 - var2.m21;
  482.       this.m22 = var1.m22 - var2.m22;
  483.    }
  484.  
  485.    public final void sub(Matrix3f var1) {
  486.       this.m00 -= var1.m00;
  487.       this.m01 -= var1.m01;
  488.       this.m02 -= var1.m02;
  489.       this.m10 -= var1.m10;
  490.       this.m11 -= var1.m11;
  491.       this.m12 -= var1.m12;
  492.       this.m20 -= var1.m20;
  493.       this.m21 -= var1.m21;
  494.       this.m22 -= var1.m22;
  495.    }
  496.  
  497.    public final void transpose() {
  498.       float var1 = this.m10;
  499.       this.m10 = this.m01;
  500.       this.m01 = var1;
  501.       var1 = this.m20;
  502.       this.m20 = this.m02;
  503.       this.m02 = var1;
  504.       var1 = this.m21;
  505.       this.m21 = this.m12;
  506.       this.m12 = var1;
  507.    }
  508.  
  509.    public final void transpose(Matrix3f var1) {
  510.       if (this != var1) {
  511.          this.m00 = var1.m00;
  512.          this.m01 = var1.m10;
  513.          this.m02 = var1.m20;
  514.          this.m10 = var1.m01;
  515.          this.m11 = var1.m11;
  516.          this.m12 = var1.m21;
  517.          this.m20 = var1.m02;
  518.          this.m21 = var1.m12;
  519.          this.m22 = var1.m22;
  520.       } else {
  521.          this.transpose();
  522.       }
  523.  
  524.    }
  525.  
  526.    public final void set(Quat4f var1) {
  527.       this.m00 = 1.0F - 2.0F * var1.y * var1.y - 2.0F * var1.z * var1.z;
  528.       this.m10 = 2.0F * (var1.x * var1.y + var1.w * var1.z);
  529.       this.m20 = 2.0F * (var1.x * var1.z - var1.w * var1.y);
  530.       this.m01 = 2.0F * (var1.x * var1.y - var1.w * var1.z);
  531.       this.m11 = 1.0F - 2.0F * var1.x * var1.x - 2.0F * var1.z * var1.z;
  532.       this.m21 = 2.0F * (var1.y * var1.z + var1.w * var1.x);
  533.       this.m02 = 2.0F * (var1.x * var1.z + var1.w * var1.y);
  534.       this.m12 = 2.0F * (var1.y * var1.z - var1.w * var1.x);
  535.       this.m22 = 1.0F - 2.0F * var1.x * var1.x - 2.0F * var1.y * var1.y;
  536.    }
  537.  
  538.    public final void set(AxisAngle4f var1) {
  539.       float var2 = (float)Math.sqrt((double)(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z));
  540.       if ((double)var2 < 1.0E-8) {
  541.          this.m00 = 1.0F;
  542.          this.m01 = 0.0F;
  543.          this.m02 = 0.0F;
  544.          this.m10 = 0.0F;
  545.          this.m11 = 1.0F;
  546.          this.m12 = 0.0F;
  547.          this.m20 = 0.0F;
  548.          this.m21 = 0.0F;
  549.          this.m22 = 1.0F;
  550.       } else {
  551.          var2 = 1.0F / var2;
  552.          float var3 = var1.x * var2;
  553.          float var4 = var1.y * var2;
  554.          float var5 = var1.z * var2;
  555.          float var6 = (float)Math.sin((double)var1.angle);
  556.          float var7 = (float)Math.cos((double)var1.angle);
  557.          float var8 = 1.0F - var7;
  558.          float var9 = var3 * var5;
  559.          float var10 = var3 * var4;
  560.          float var11 = var4 * var5;
  561.          this.m00 = var8 * var3 * var3 + var7;
  562.          this.m01 = var8 * var10 - var6 * var5;
  563.          this.m02 = var8 * var9 + var6 * var4;
  564.          this.m10 = var8 * var10 + var6 * var5;
  565.          this.m11 = var8 * var4 * var4 + var7;
  566.          this.m12 = var8 * var11 - var6 * var3;
  567.          this.m20 = var8 * var9 - var6 * var4;
  568.          this.m21 = var8 * var11 + var6 * var3;
  569.          this.m22 = var8 * var5 * var5 + var7;
  570.       }
  571.  
  572.    }
  573.  
  574.    public final void set(AxisAngle4d var1) {
  575.       double var2 = Math.sqrt(var1.x * var1.x + var1.y * var1.y + var1.z * var1.z);
  576.       if (var2 < 1.0E-8) {
  577.          this.m00 = 1.0F;
  578.          this.m01 = 0.0F;
  579.          this.m02 = 0.0F;
  580.          this.m10 = 0.0F;
  581.          this.m11 = 1.0F;
  582.          this.m12 = 0.0F;
  583.          this.m20 = 0.0F;
  584.          this.m21 = 0.0F;
  585.          this.m22 = 1.0F;
  586.       } else {
  587.          var2 = (double)1.0F / var2;
  588.          double var4 = var1.x * var2;
  589.          double var6 = var1.y * var2;
  590.          double var8 = var1.z * var2;
  591.          double var10 = Math.sin(var1.angle);
  592.          double var12 = Math.cos(var1.angle);
  593.          double var14 = (double)1.0F - var12;
  594.          double var16 = var4 * var8;
  595.          double var18 = var4 * var6;
  596.          double var20 = var6 * var8;
  597.          this.m00 = (float)(var14 * var4 * var4 + var12);
  598.          this.m01 = (float)(var14 * var18 - var10 * var8);
  599.          this.m02 = (float)(var14 * var16 + var10 * var6);
  600.          this.m10 = (float)(var14 * var18 + var10 * var8);
  601.          this.m11 = (float)(var14 * var6 * var6 + var12);
  602.          this.m12 = (float)(var14 * var20 - var10 * var4);
  603.          this.m20 = (float)(var14 * var16 - var10 * var6);
  604.          this.m21 = (float)(var14 * var20 + var10 * var4);
  605.          this.m22 = (float)(var14 * var8 * var8 + var12);
  606.       }
  607.  
  608.    }
  609.  
  610.    public final void set(Quat4d var1) {
  611.       this.m00 = (float)((double)1.0F - (double)2.0F * var1.y * var1.y - (double)2.0F * var1.z * var1.z);
  612.       this.m10 = (float)((double)2.0F * (var1.x * var1.y + var1.w * var1.z));
  613.       this.m20 = (float)((double)2.0F * (var1.x * var1.z - var1.w * var1.y));
  614.       this.m01 = (float)((double)2.0F * (var1.x * var1.y - var1.w * var1.z));
  615.       this.m11 = (float)((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.z * var1.z);
  616.       this.m21 = (float)((double)2.0F * (var1.y * var1.z + var1.w * var1.x));
  617.       this.m02 = (float)((double)2.0F * (var1.x * var1.z + var1.w * var1.y));
  618.       this.m12 = (float)((double)2.0F * (var1.y * var1.z - var1.w * var1.x));
  619.       this.m22 = (float)((double)1.0F - (double)2.0F * var1.x * var1.x - (double)2.0F * var1.y * var1.y);
  620.    }
  621.  
  622.    public final void set(float[] var1) {
  623.       this.m00 = var1[0];
  624.       this.m01 = var1[1];
  625.       this.m02 = var1[2];
  626.       this.m10 = var1[3];
  627.       this.m11 = var1[4];
  628.       this.m12 = var1[5];
  629.       this.m20 = var1[6];
  630.       this.m21 = var1[7];
  631.       this.m22 = var1[8];
  632.    }
  633.  
  634.    public final void set(Matrix3f var1) {
  635.       this.m00 = var1.m00;
  636.       this.m01 = var1.m01;
  637.       this.m02 = var1.m02;
  638.       this.m10 = var1.m10;
  639.       this.m11 = var1.m11;
  640.       this.m12 = var1.m12;
  641.       this.m20 = var1.m20;
  642.       this.m21 = var1.m21;
  643.       this.m22 = var1.m22;
  644.    }
  645.  
  646.    public final void set(Matrix3d var1) {
  647.       this.m00 = (float)var1.m00;
  648.       this.m01 = (float)var1.m01;
  649.       this.m02 = (float)var1.m02;
  650.       this.m10 = (float)var1.m10;
  651.       this.m11 = (float)var1.m11;
  652.       this.m12 = (float)var1.m12;
  653.       this.m20 = (float)var1.m20;
  654.       this.m21 = (float)var1.m21;
  655.       this.m22 = (float)var1.m22;
  656.    }
  657.  
  658.    public final void invert(Matrix3f var1) {
  659.       this.invertGeneral(var1);
  660.    }
  661.  
  662.    public final void invert() {
  663.       this.invertGeneral(this);
  664.    }
  665.  
  666.    private final void invertGeneral(Matrix3f var1) {
  667.       double[] var2 = new double[9];
  668.       double[] var3 = new double[9];
  669.       int[] var4 = new int[3];
  670.       var2[0] = (double)var1.m00;
  671.       var2[1] = (double)var1.m01;
  672.       var2[2] = (double)var1.m02;
  673.       var2[3] = (double)var1.m10;
  674.       var2[4] = (double)var1.m11;
  675.       var2[5] = (double)var1.m12;
  676.       var2[6] = (double)var1.m20;
  677.       var2[7] = (double)var1.m21;
  678.       var2[8] = (double)var1.m22;
  679.       if (!luDecomposition(var2, var4)) {
  680.          throw new SingularMatrixException(VecMathI18N.getString("Matrix3f12"));
  681.       } else {
  682.          for(int var5 = 0; var5 < 9; ++var5) {
  683.             var3[var5] = (double)0.0F;
  684.          }
  685.  
  686.          var3[0] = (double)1.0F;
  687.          var3[4] = (double)1.0F;
  688.          var3[8] = (double)1.0F;
  689.          luBacksubstitution(var2, var4, var3);
  690.          this.m00 = (float)var3[0];
  691.          this.m01 = (float)var3[1];
  692.          this.m02 = (float)var3[2];
  693.          this.m10 = (float)var3[3];
  694.          this.m11 = (float)var3[4];
  695.          this.m12 = (float)var3[5];
  696.          this.m20 = (float)var3[6];
  697.          this.m21 = (float)var3[7];
  698.          this.m22 = (float)var3[8];
  699.       }
  700.    }
  701.  
  702.    static boolean luDecomposition(double[] var0, int[] var1) {
  703.       double[] var2 = new double[3];
  704.       int var5 = 0;
  705.       int var6 = 0;
  706.  
  707.       double var7;
  708.       for(int var3 = 3; var3-- != 0; var2[var6++] = (double)1.0F / var7) {
  709.          var7 = (double)0.0F;
  710.          int var4 = 3;
  711.  
  712.          while(var4-- != 0) {
  713.             double var9 = var0[var5++];
  714.             var9 = Math.abs(var9);
  715.             if (var9 > var7) {
  716.                var7 = var9;
  717.             }
  718.          }
  719.  
  720.          if (var7 == (double)0.0F) {
  721.             return false;
  722.          }
  723.       }
  724.  
  725.       byte var18 = 0;
  726.  
  727.       for(int var17 = 0; var17 < 3; ++var17) {
  728.          for(int var19 = 0; var19 < var17; ++var19) {
  729.             int var8 = var18 + 3 * var19 + var17;
  730.             double var11 = var0[var8];
  731.             int var23 = var19;
  732.             int var29 = var18 + 3 * var19;
  733.  
  734.             for(int var10 = var18 + var17; var23-- != 0; var10 += 3) {
  735.                var11 -= var0[var29] * var0[var10];
  736.                ++var29;
  737.             }
  738.  
  739.             var0[var8] = var11;
  740.          }
  741.  
  742.          double var13 = (double)0.0F;
  743.          var6 = -1;
  744.  
  745.          for(int var20 = var17; var20 < 3; ++var20) {
  746.             int var26 = var18 + 3 * var20 + var17;
  747.             double var34 = var0[var26];
  748.             int var24 = var17;
  749.             int var30 = var18 + 3 * var20;
  750.  
  751.             for(int var32 = var18 + var17; var24-- != 0; var32 += 3) {
  752.                var34 -= var0[var30] * var0[var32];
  753.                ++var30;
  754.             }
  755.  
  756.             var0[var26] = var34;
  757.             double var15;
  758.             if ((var15 = var2[var20] * Math.abs(var34)) >= var13) {
  759.                var13 = var15;
  760.                var6 = var20;
  761.             }
  762.          }
  763.  
  764.          if (var6 < 0) {
  765.             throw new RuntimeException(VecMathI18N.getString("Matrix3f13"));
  766.          }
  767.  
  768.          if (var17 != var6) {
  769.             int var25 = 3;
  770.             int var31 = var18 + 3 * var6;
  771.  
  772.             double var35;
  773.             for(int var33 = var18 + 3 * var17; var25-- != 0; var0[var33++] = var35) {
  774.                var35 = var0[var31];
  775.                var0[var31++] = var0[var33];
  776.             }
  777.  
  778.             var2[var6] = var2[var17];
  779.          }
  780.  
  781.          var1[var17] = var6;
  782.          if (var0[var18 + 3 * var17 + var17] == (double)0.0F) {
  783.             return false;
  784.          }
  785.  
  786.          if (var17 != 2) {
  787.             double var36 = (double)1.0F / var0[var18 + 3 * var17 + var17];
  788.             int var27 = var18 + 3 * (var17 + 1) + var17;
  789.  
  790.             for(int var21 = 2 - var17; var21-- != 0; var27 += 3) {
  791.                var0[var27] *= var36;
  792.             }
  793.          }
  794.       }
  795.  
  796.       return true;
  797.    }
  798.  
  799.    static void luBacksubstitution(double[] var0, int[] var1, double[] var2) {
  800.       byte var8 = 0;
  801.  
  802.       for(int var7 = 0; var7 < 3; ++var7) {
  803.          int var9 = var7;
  804.          int var4 = -1;
  805.  
  806.          for(int var3 = 0; var3 < 3; ++var3) {
  807.             int var5 = var1[var8 + var3];
  808.             double var11 = var2[var9 + 3 * var5];
  809.             var2[var9 + 3 * var5] = var2[var9 + 3 * var3];
  810.             if (var4 >= 0) {
  811.                int var10 = var3 * 3;
  812.  
  813.                for(int var6 = var4; var6 <= var3 - 1; ++var6) {
  814.                   var11 -= var0[var10 + var6] * var2[var9 + 3 * var6];
  815.                }
  816.             } else if (var11 != (double)0.0F) {
  817.                var4 = var3;
  818.             }
  819.  
  820.             var2[var9 + 3 * var3] = var11;
  821.          }
  822.  
  823.          int var13 = 6;
  824.          var2[var9 + 6] /= var0[var13 + 2];
  825.          var13 -= 3;
  826.          var2[var9 + 3] = (var2[var9 + 3] - var0[var13 + 2] * var2[var9 + 6]) / var0[var13 + 1];
  827.          var13 -= 3;
  828.          var2[var9 + 0] = (var2[var9 + 0] - var0[var13 + 1] * var2[var9 + 3] - var0[var13 + 2] * var2[var9 + 6]) / var0[var13 + 0];
  829.       }
  830.  
  831.    }
  832.  
  833.    public final float determinant() {
  834.       float var1 = this.m00 * (this.m11 * this.m22 - this.m12 * this.m21) + this.m01 * (this.m12 * this.m20 - this.m10 * this.m22) + this.m02 * (this.m10 * this.m21 - this.m11 * this.m20);
  835.       return var1;
  836.    }
  837.  
  838.    public final void set(float var1) {
  839.       this.m00 = var1;
  840.       this.m01 = 0.0F;
  841.       this.m02 = 0.0F;
  842.       this.m10 = 0.0F;
  843.       this.m11 = var1;
  844.       this.m12 = 0.0F;
  845.       this.m20 = 0.0F;
  846.       this.m21 = 0.0F;
  847.       this.m22 = var1;
  848.    }
  849.  
  850.    public final void rotX(float var1) {
  851.       float var2 = (float)Math.sin((double)var1);
  852.       float var3 = (float)Math.cos((double)var1);
  853.       this.m00 = 1.0F;
  854.       this.m01 = 0.0F;
  855.       this.m02 = 0.0F;
  856.       this.m10 = 0.0F;
  857.       this.m11 = var3;
  858.       this.m12 = -var2;
  859.       this.m20 = 0.0F;
  860.       this.m21 = var2;
  861.       this.m22 = var3;
  862.    }
  863.  
  864.    public final void rotY(float var1) {
  865.       float var2 = (float)Math.sin((double)var1);
  866.       float var3 = (float)Math.cos((double)var1);
  867.       this.m00 = var3;
  868.       this.m01 = 0.0F;
  869.       this.m02 = var2;
  870.       this.m10 = 0.0F;
  871.       this.m11 = 1.0F;
  872.       this.m12 = 0.0F;
  873.       this.m20 = -var2;
  874.       this.m21 = 0.0F;
  875.       this.m22 = var3;
  876.    }
  877.  
  878.    public final void rotZ(float var1) {
  879.       float var2 = (float)Math.sin((double)var1);
  880.       float var3 = (float)Math.cos((double)var1);
  881.       this.m00 = var3;
  882.       this.m01 = -var2;
  883.       this.m02 = 0.0F;
  884.       this.m10 = var2;
  885.       this.m11 = var3;
  886.       this.m12 = 0.0F;
  887.       this.m20 = 0.0F;
  888.       this.m21 = 0.0F;
  889.       this.m22 = 1.0F;
  890.    }
  891.  
  892.    public final void mul(float var1) {
  893.       this.m00 *= var1;
  894.       this.m01 *= var1;
  895.       this.m02 *= var1;
  896.       this.m10 *= var1;
  897.       this.m11 *= var1;
  898.       this.m12 *= var1;
  899.       this.m20 *= var1;
  900.       this.m21 *= var1;
  901.       this.m22 *= var1;
  902.    }
  903.  
  904.    public final void mul(float var1, Matrix3f var2) {
  905.       this.m00 = var1 * var2.m00;
  906.       this.m01 = var1 * var2.m01;
  907.       this.m02 = var1 * var2.m02;
  908.       this.m10 = var1 * var2.m10;
  909.       this.m11 = var1 * var2.m11;
  910.       this.m12 = var1 * var2.m12;
  911.       this.m20 = var1 * var2.m20;
  912.       this.m21 = var1 * var2.m21;
  913.       this.m22 = var1 * var2.m22;
  914.    }
  915.  
  916.    public final void mul(Matrix3f var1) {
  917.       float var2 = this.m00 * var1.m00 + this.m01 * var1.m10 + this.m02 * var1.m20;
  918.       float var3 = this.m00 * var1.m01 + this.m01 * var1.m11 + this.m02 * var1.m21;
  919.       float var4 = this.m00 * var1.m02 + this.m01 * var1.m12 + this.m02 * var1.m22;
  920.       float var5 = this.m10 * var1.m00 + this.m11 * var1.m10 + this.m12 * var1.m20;
  921.       float var6 = this.m10 * var1.m01 + this.m11 * var1.m11 + this.m12 * var1.m21;
  922.       float var7 = this.m10 * var1.m02 + this.m11 * var1.m12 + this.m12 * var1.m22;
  923.       float var8 = this.m20 * var1.m00 + this.m21 * var1.m10 + this.m22 * var1.m20;
  924.       float var9 = this.m20 * var1.m01 + this.m21 * var1.m11 + this.m22 * var1.m21;
  925.       float var10 = this.m20 * var1.m02 + this.m21 * var1.m12 + this.m22 * var1.m22;
  926.       this.m00 = var2;
  927.       this.m01 = var3;
  928.       this.m02 = var4;
  929.       this.m10 = var5;
  930.       this.m11 = var6;
  931.       this.m12 = var7;
  932.       this.m20 = var8;
  933.       this.m21 = var9;
  934.       this.m22 = var10;
  935.    }
  936.  
  937.    public final void mul(Matrix3f var1, Matrix3f var2) {
  938.       if (this != var1 && this != var2) {
  939.          this.m00 = var1.m00 * var2.m00 + var1.m01 * var2.m10 + var1.m02 * var2.m20;
  940.          this.m01 = var1.m00 * var2.m01 + var1.m01 * var2.m11 + var1.m02 * var2.m21;
  941.          this.m02 = var1.m00 * var2.m02 + var1.m01 * var2.m12 + var1.m02 * var2.m22;
  942.          this.m10 = var1.m10 * var2.m00 + var1.m11 * var2.m10 + var1.m12 * var2.m20;
  943.          this.m11 = var1.m10 * var2.m01 + var1.m11 * var2.m11 + var1.m12 * var2.m21;
  944.          this.m12 = var1.m10 * var2.m02 + var1.m11 * var2.m12 + var1.m12 * var2.m22;
  945.          this.m20 = var1.m20 * var2.m00 + var1.m21 * var2.m10 + var1.m22 * var2.m20;
  946.          this.m21 = var1.m20 * var2.m01 + var1.m21 * var2.m11 + var1.m22 * var2.m21;
  947.          this.m22 = var1.m20 * var2.m02 + var1.m21 * var2.m12 + var1.m22 * var2.m22;
  948.       } else {
  949.          float var3 = var1.m00 * var2.m00 + var1.m01 * var2.m10 + var1.m02 * var2.m20;
  950.          float var4 = var1.m00 * var2.m01 + var1.m01 * var2.m11 + var1.m02 * var2.m21;
  951.          float var5 = var1.m00 * var2.m02 + var1.m01 * var2.m12 + var1.m02 * var2.m22;
  952.          float var6 = var1.m10 * var2.m00 + var1.m11 * var2.m10 + var1.m12 * var2.m20;
  953.          float var7 = var1.m10 * var2.m01 + var1.m11 * var2.m11 + var1.m12 * var2.m21;
  954.          float var8 = var1.m10 * var2.m02 + var1.m11 * var2.m12 + var1.m12 * var2.m22;
  955.          float var9 = var1.m20 * var2.m00 + var1.m21 * var2.m10 + var1.m22 * var2.m20;
  956.          float var10 = var1.m20 * var2.m01 + var1.m21 * var2.m11 + var1.m22 * var2.m21;
  957.          float var11 = var1.m20 * var2.m02 + var1.m21 * var2.m12 + var1.m22 * var2.m22;
  958.          this.m00 = var3;
  959.          this.m01 = var4;
  960.          this.m02 = var5;
  961.          this.m10 = var6;
  962.          this.m11 = var7;
  963.          this.m12 = var8;
  964.          this.m20 = var9;
  965.          this.m21 = var10;
  966.          this.m22 = var11;
  967.       }
  968.  
  969.    }
  970.  
  971.    public final void mulNormalize(Matrix3f var1) {
  972.       double[] var2 = new double[9];
  973.       double[] var3 = new double[9];
  974.       double[] var4 = new double[3];
  975.       var2[0] = (double)(this.m00 * var1.m00 + this.m01 * var1.m10 + this.m02 * var1.m20);
  976.       var2[1] = (double)(this.m00 * var1.m01 + this.m01 * var1.m11 + this.m02 * var1.m21);
  977.       var2[2] = (double)(this.m00 * var1.m02 + this.m01 * var1.m12 + this.m02 * var1.m22);
  978.       var2[3] = (double)(this.m10 * var1.m00 + this.m11 * var1.m10 + this.m12 * var1.m20);
  979.       var2[4] = (double)(this.m10 * var1.m01 + this.m11 * var1.m11 + this.m12 * var1.m21);
  980.       var2[5] = (double)(this.m10 * var1.m02 + this.m11 * var1.m12 + this.m12 * var1.m22);
  981.       var2[6] = (double)(this.m20 * var1.m00 + this.m21 * var1.m10 + this.m22 * var1.m20);
  982.       var2[7] = (double)(this.m20 * var1.m01 + this.m21 * var1.m11 + this.m22 * var1.m21);
  983.       var2[8] = (double)(this.m20 * var1.m02 + this.m21 * var1.m12 + this.m22 * var1.m22);
  984.       Matrix3d.compute_svd(var2, var4, var3);
  985.       this.m00 = (float)var3[0];
  986.       this.m01 = (float)var3[1];
  987.       this.m02 = (float)var3[2];
  988.       this.m10 = (float)var3[3];
  989.       this.m11 = (float)var3[4];
  990.       this.m12 = (float)var3[5];
  991.       this.m20 = (float)var3[6];
  992.       this.m21 = (float)var3[7];
  993.       this.m22 = (float)var3[8];
  994.    }
  995.  
  996.    public final void mulNormalize(Matrix3f var1, Matrix3f var2) {
  997.       double[] var3 = new double[9];
  998.       double[] var4 = new double[9];
  999.       double[] var5 = new double[3];
  1000.       var3[0] = (double)(var1.m00 * var2.m00 + var1.m01 * var2.m10 + var1.m02 * var2.m20);
  1001.       var3[1] = (double)(var1.m00 * var2.m01 + var1.m01 * var2.m11 + var1.m02 * var2.m21);
  1002.       var3[2] = (double)(var1.m00 * var2.m02 + var1.m01 * var2.m12 + var1.m02 * var2.m22);
  1003.       var3[3] = (double)(var1.m10 * var2.m00 + var1.m11 * var2.m10 + var1.m12 * var2.m20);
  1004.       var3[4] = (double)(var1.m10 * var2.m01 + var1.m11 * var2.m11 + var1.m12 * var2.m21);
  1005.       var3[5] = (double)(var1.m10 * var2.m02 + var1.m11 * var2.m12 + var1.m12 * var2.m22);
  1006.       var3[6] = (double)(var1.m20 * var2.m00 + var1.m21 * var2.m10 + var1.m22 * var2.m20);
  1007.       var3[7] = (double)(var1.m20 * var2.m01 + var1.m21 * var2.m11 + var1.m22 * var2.m21);
  1008.       var3[8] = (double)(var1.m20 * var2.m02 + var1.m21 * var2.m12 + var1.m22 * var2.m22);
  1009.       Matrix3d.compute_svd(var3, var5, var4);
  1010.       this.m00 = (float)var4[0];
  1011.       this.m01 = (float)var4[1];
  1012.       this.m02 = (float)var4[2];
  1013.       this.m10 = (float)var4[3];
  1014.       this.m11 = (float)var4[4];
  1015.       this.m12 = (float)var4[5];
  1016.       this.m20 = (float)var4[6];
  1017.       this.m21 = (float)var4[7];
  1018.       this.m22 = (float)var4[8];
  1019.    }
  1020.  
  1021.    public final void mulTransposeBoth(Matrix3f var1, Matrix3f var2) {
  1022.       if (this != var1 && this != var2) {
  1023.          this.m00 = var1.m00 * var2.m00 + var1.m10 * var2.m01 + var1.m20 * var2.m02;
  1024.          this.m01 = var1.m00 * var2.m10 + var1.m10 * var2.m11 + var1.m20 * var2.m12;
  1025.          this.m02 = var1.m00 * var2.m20 + var1.m10 * var2.m21 + var1.m20 * var2.m22;
  1026.          this.m10 = var1.m01 * var2.m00 + var1.m11 * var2.m01 + var1.m21 * var2.m02;
  1027.          this.m11 = var1.m01 * var2.m10 + var1.m11 * var2.m11 + var1.m21 * var2.m12;
  1028.          this.m12 = var1.m01 * var2.m20 + var1.m11 * var2.m21 + var1.m21 * var2.m22;
  1029.          this.m20 = var1.m02 * var2.m00 + var1.m12 * var2.m01 + var1.m22 * var2.m02;
  1030.          this.m21 = var1.m02 * var2.m10 + var1.m12 * var2.m11 + var1.m22 * var2.m12;
  1031.          this.m22 = var1.m02 * var2.m20 + var1.m12 * var2.m21 + var1.m22 * var2.m22;
  1032.       } else {
  1033.          float var3 = var1.m00 * var2.m00 + var1.m10 * var2.m01 + var1.m20 * var2.m02;
  1034.          float var4 = var1.m00 * var2.m10 + var1.m10 * var2.m11 + var1.m20 * var2.m12;
  1035.          float var5 = var1.m00 * var2.m20 + var1.m10 * var2.m21 + var1.m20 * var2.m22;
  1036.          float var6 = var1.m01 * var2.m00 + var1.m11 * var2.m01 + var1.m21 * var2.m02;
  1037.          float var7 = var1.m01 * var2.m10 + var1.m11 * var2.m11 + var1.m21 * var2.m12;
  1038.          float var8 = var1.m01 * var2.m20 + var1.m11 * var2.m21 + var1.m21 * var2.m22;
  1039.          float var9 = var1.m02 * var2.m00 + var1.m12 * var2.m01 + var1.m22 * var2.m02;
  1040.          float var10 = var1.m02 * var2.m10 + var1.m12 * var2.m11 + var1.m22 * var2.m12;
  1041.          float var11 = var1.m02 * var2.m20 + var1.m12 * var2.m21 + var1.m22 * var2.m22;
  1042.          this.m00 = var3;
  1043.          this.m01 = var4;
  1044.          this.m02 = var5;
  1045.          this.m10 = var6;
  1046.          this.m11 = var7;
  1047.          this.m12 = var8;
  1048.          this.m20 = var9;
  1049.          this.m21 = var10;
  1050.          this.m22 = var11;
  1051.       }
  1052.  
  1053.    }
  1054.  
  1055.    public final void mulTransposeRight(Matrix3f var1, Matrix3f var2) {
  1056.       if (this != var1 && this != var2) {
  1057.          this.m00 = var1.m00 * var2.m00 + var1.m01 * var2.m01 + var1.m02 * var2.m02;
  1058.          this.m01 = var1.m00 * var2.m10 + var1.m01 * var2.m11 + var1.m02 * var2.m12;
  1059.          this.m02 = var1.m00 * var2.m20 + var1.m01 * var2.m21 + var1.m02 * var2.m22;
  1060.          this.m10 = var1.m10 * var2.m00 + var1.m11 * var2.m01 + var1.m12 * var2.m02;
  1061.          this.m11 = var1.m10 * var2.m10 + var1.m11 * var2.m11 + var1.m12 * var2.m12;
  1062.          this.m12 = var1.m10 * var2.m20 + var1.m11 * var2.m21 + var1.m12 * var2.m22;
  1063.          this.m20 = var1.m20 * var2.m00 + var1.m21 * var2.m01 + var1.m22 * var2.m02;
  1064.          this.m21 = var1.m20 * var2.m10 + var1.m21 * var2.m11 + var1.m22 * var2.m12;
  1065.          this.m22 = var1.m20 * var2.m20 + var1.m21 * var2.m21 + var1.m22 * var2.m22;
  1066.       } else {
  1067.          float var3 = var1.m00 * var2.m00 + var1.m01 * var2.m01 + var1.m02 * var2.m02;
  1068.          float var4 = var1.m00 * var2.m10 + var1.m01 * var2.m11 + var1.m02 * var2.m12;
  1069.          float var5 = var1.m00 * var2.m20 + var1.m01 * var2.m21 + var1.m02 * var2.m22;
  1070.          float var6 = var1.m10 * var2.m00 + var1.m11 * var2.m01 + var1.m12 * var2.m02;
  1071.          float var7 = var1.m10 * var2.m10 + var1.m11 * var2.m11 + var1.m12 * var2.m12;
  1072.          float var8 = var1.m10 * var2.m20 + var1.m11 * var2.m21 + var1.m12 * var2.m22;
  1073.          float var9 = var1.m20 * var2.m00 + var1.m21 * var2.m01 + var1.m22 * var2.m02;
  1074.          float var10 = var1.m20 * var2.m10 + var1.m21 * var2.m11 + var1.m22 * var2.m12;
  1075.          float var11 = var1.m20 * var2.m20 + var1.m21 * var2.m21 + var1.m22 * var2.m22;
  1076.          this.m00 = var3;
  1077.          this.m01 = var4;
  1078.          this.m02 = var5;
  1079.          this.m10 = var6;
  1080.          this.m11 = var7;
  1081.          this.m12 = var8;
  1082.          this.m20 = var9;
  1083.          this.m21 = var10;
  1084.          this.m22 = var11;
  1085.       }
  1086.  
  1087.    }
  1088.  
  1089.    public final void mulTransposeLeft(Matrix3f var1, Matrix3f var2) {
  1090.       if (this != var1 && this != var2) {
  1091.          this.m00 = var1.m00 * var2.m00 + var1.m10 * var2.m10 + var1.m20 * var2.m20;
  1092.          this.m01 = var1.m00 * var2.m01 + var1.m10 * var2.m11 + var1.m20 * var2.m21;
  1093.          this.m02 = var1.m00 * var2.m02 + var1.m10 * var2.m12 + var1.m20 * var2.m22;
  1094.          this.m10 = var1.m01 * var2.m00 + var1.m11 * var2.m10 + var1.m21 * var2.m20;
  1095.          this.m11 = var1.m01 * var2.m01 + var1.m11 * var2.m11 + var1.m21 * var2.m21;
  1096.          this.m12 = var1.m01 * var2.m02 + var1.m11 * var2.m12 + var1.m21 * var2.m22;
  1097.          this.m20 = var1.m02 * var2.m00 + var1.m12 * var2.m10 + var1.m22 * var2.m20;
  1098.          this.m21 = var1.m02 * var2.m01 + var1.m12 * var2.m11 + var1.m22 * var2.m21;
  1099.          this.m22 = var1.m02 * var2.m02 + var1.m12 * var2.m12 + var1.m22 * var2.m22;
  1100.       } else {
  1101.          float var3 = var1.m00 * var2.m00 + var1.m10 * var2.m10 + var1.m20 * var2.m20;
  1102.          float var4 = var1.m00 * var2.m01 + var1.m10 * var2.m11 + var1.m20 * var2.m21;
  1103.          float var5 = var1.m00 * var2.m02 + var1.m10 * var2.m12 + var1.m20 * var2.m22;
  1104.          float var6 = var1.m01 * var2.m00 + var1.m11 * var2.m10 + var1.m21 * var2.m20;
  1105.          float var7 = var1.m01 * var2.m01 + var1.m11 * var2.m11 + var1.m21 * var2.m21;
  1106.          float var8 = var1.m01 * var2.m02 + var1.m11 * var2.m12 + var1.m21 * var2.m22;
  1107.          float var9 = var1.m02 * var2.m00 + var1.m12 * var2.m10 + var1.m22 * var2.m20;
  1108.          float var10 = var1.m02 * var2.m01 + var1.m12 * var2.m11 + var1.m22 * var2.m21;
  1109.          float var11 = var1.m02 * var2.m02 + var1.m12 * var2.m12 + var1.m22 * var2.m22;
  1110.          this.m00 = var3;
  1111.          this.m01 = var4;
  1112.          this.m02 = var5;
  1113.          this.m10 = var6;
  1114.          this.m11 = var7;
  1115.          this.m12 = var8;
  1116.          this.m20 = var9;
  1117.          this.m21 = var10;
  1118.          this.m22 = var11;
  1119.       }
  1120.  
  1121.    }
  1122.  
  1123.    public final void normalize() {
  1124.       double[] var1 = new double[9];
  1125.       double[] var2 = new double[3];
  1126.       this.getScaleRotate(var2, var1);
  1127.       this.m00 = (float)var1[0];
  1128.       this.m01 = (float)var1[1];
  1129.       this.m02 = (float)var1[2];
  1130.       this.m10 = (float)var1[3];
  1131.       this.m11 = (float)var1[4];
  1132.       this.m12 = (float)var1[5];
  1133.       this.m20 = (float)var1[6];
  1134.       this.m21 = (float)var1[7];
  1135.       this.m22 = (float)var1[8];
  1136.    }
  1137.  
  1138.    public final void normalize(Matrix3f var1) {
  1139.       double[] var2 = new double[9];
  1140.       double[] var3 = new double[9];
  1141.       double[] var4 = new double[3];
  1142.       var2[0] = (double)var1.m00;
  1143.       var2[1] = (double)var1.m01;
  1144.       var2[2] = (double)var1.m02;
  1145.       var2[3] = (double)var1.m10;
  1146.       var2[4] = (double)var1.m11;
  1147.       var2[5] = (double)var1.m12;
  1148.       var2[6] = (double)var1.m20;
  1149.       var2[7] = (double)var1.m21;
  1150.       var2[8] = (double)var1.m22;
  1151.       Matrix3d.compute_svd(var2, var4, var3);
  1152.       this.m00 = (float)var3[0];
  1153.       this.m01 = (float)var3[1];
  1154.       this.m02 = (float)var3[2];
  1155.       this.m10 = (float)var3[3];
  1156.       this.m11 = (float)var3[4];
  1157.       this.m12 = (float)var3[5];
  1158.       this.m20 = (float)var3[6];
  1159.       this.m21 = (float)var3[7];
  1160.       this.m22 = (float)var3[8];
  1161.    }
  1162.  
  1163.    public final void normalizeCP() {
  1164.       float var1 = 1.0F / (float)Math.sqrt((double)(this.m00 * this.m00 + this.m10 * this.m10 + this.m20 * this.m20));
  1165.       this.m00 *= var1;
  1166.       this.m10 *= var1;
  1167.       this.m20 *= var1;
  1168.       var1 = 1.0F / (float)Math.sqrt((double)(this.m01 * this.m01 + this.m11 * this.m11 + this.m21 * this.m21));
  1169.       this.m01 *= var1;
  1170.       this.m11 *= var1;
  1171.       this.m21 *= var1;
  1172.       this.m02 = this.m10 * this.m21 - this.m11 * this.m20;
  1173.       this.m12 = this.m01 * this.m20 - this.m00 * this.m21;
  1174.       this.m22 = this.m00 * this.m11 - this.m01 * this.m10;
  1175.    }
  1176.  
  1177.    public final void normalizeCP(Matrix3f var1) {
  1178.       float var2 = 1.0F / (float)Math.sqrt((double)(var1.m00 * var1.m00 + var1.m10 * var1.m10 + var1.m20 * var1.m20));
  1179.       this.m00 = var1.m00 * var2;
  1180.       this.m10 = var1.m10 * var2;
  1181.       this.m20 = var1.m20 * var2;
  1182.       var2 = 1.0F / (float)Math.sqrt((double)(var1.m01 * var1.m01 + var1.m11 * var1.m11 + var1.m21 * var1.m21));
  1183.       this.m01 = var1.m01 * var2;
  1184.       this.m11 = var1.m11 * var2;
  1185.       this.m21 = var1.m21 * var2;
  1186.       this.m02 = this.m10 * this.m21 - this.m11 * this.m20;
  1187.       this.m12 = this.m01 * this.m20 - this.m00 * this.m21;
  1188.       this.m22 = this.m00 * this.m11 - this.m01 * this.m10;
  1189.    }
  1190.  
  1191.    public boolean equals(Matrix3f var1) {
  1192.       try {
  1193.          return this.m00 == var1.m00 && this.m01 == var1.m01 && this.m02 == var1.m02 && this.m10 == var1.m10 && this.m11 == var1.m11 && this.m12 == var1.m12 && this.m20 == var1.m20 && this.m21 == var1.m21 && this.m22 == var1.m22;
  1194.       } catch (NullPointerException var3) {
  1195.          return false;
  1196.       }
  1197.    }
  1198.  
  1199.    public boolean equals(Object var1) {
  1200.       try {
  1201.          Matrix3f var2 = (Matrix3f)var1;
  1202.          return this.m00 == var2.m00 && this.m01 == var2.m01 && this.m02 == var2.m02 && this.m10 == var2.m10 && this.m11 == var2.m11 && this.m12 == var2.m12 && this.m20 == var2.m20 && this.m21 == var2.m21 && this.m22 == var2.m22;
  1203.       } catch (ClassCastException var4) {
  1204.          return false;
  1205.       } catch (NullPointerException var5) {
  1206.          return false;
  1207.       }
  1208.    }
  1209.  
  1210.    public boolean epsilonEquals(Matrix3f var1, float var2) {
  1211.       boolean var3 = true;
  1212.       if (Math.abs(this.m00 - var1.m00) > var2) {
  1213.          var3 = false;
  1214.       }
  1215.  
  1216.       if (Math.abs(this.m01 - var1.m01) > var2) {
  1217.          var3 = false;
  1218.       }
  1219.  
  1220.       if (Math.abs(this.m02 - var1.m02) > var2) {
  1221.          var3 = false;
  1222.       }
  1223.  
  1224.       if (Math.abs(this.m10 - var1.m10) > var2) {
  1225.          var3 = false;
  1226.       }
  1227.  
  1228.       if (Math.abs(this.m11 - var1.m11) > var2) {
  1229.          var3 = false;
  1230.       }
  1231.  
  1232.       if (Math.abs(this.m12 - var1.m12) > var2) {
  1233.          var3 = false;
  1234.       }
  1235.  
  1236.       if (Math.abs(this.m20 - var1.m20) > var2) {
  1237.          var3 = false;
  1238.       }
  1239.  
  1240.       if (Math.abs(this.m21 - var1.m21) > var2) {
  1241.          var3 = false;
  1242.       }
  1243.  
  1244.       if (Math.abs(this.m22 - var1.m22) > var2) {
  1245.          var3 = false;
  1246.       }
  1247.  
  1248.       return var3;
  1249.    }
  1250.  
  1251.    public int hashCode() {
  1252.       long var1 = 1L;
  1253.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m00);
  1254.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m01);
  1255.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m02);
  1256.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m10);
  1257.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m11);
  1258.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m12);
  1259.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m20);
  1260.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m21);
  1261.       var1 = 31L * var1 + (long)Float.floatToIntBits(this.m22);
  1262.       return (int)(var1 ^ var1 >> 32);
  1263.    }
  1264.  
  1265.    public final void setZero() {
  1266.       this.m00 = 0.0F;
  1267.       this.m01 = 0.0F;
  1268.       this.m02 = 0.0F;
  1269.       this.m10 = 0.0F;
  1270.       this.m11 = 0.0F;
  1271.       this.m12 = 0.0F;
  1272.       this.m20 = 0.0F;
  1273.       this.m21 = 0.0F;
  1274.       this.m22 = 0.0F;
  1275.    }
  1276.  
  1277.    public final void negate() {
  1278.       this.m00 = -this.m00;
  1279.       this.m01 = -this.m01;
  1280.       this.m02 = -this.m02;
  1281.       this.m10 = -this.m10;
  1282.       this.m11 = -this.m11;
  1283.       this.m12 = -this.m12;
  1284.       this.m20 = -this.m20;
  1285.       this.m21 = -this.m21;
  1286.       this.m22 = -this.m22;
  1287.    }
  1288.  
  1289.    public final void negate(Matrix3f var1) {
  1290.       this.m00 = -var1.m00;
  1291.       this.m01 = -var1.m01;
  1292.       this.m02 = -var1.m02;
  1293.       this.m10 = -var1.m10;
  1294.       this.m11 = -var1.m11;
  1295.       this.m12 = -var1.m12;
  1296.       this.m20 = -var1.m20;
  1297.       this.m21 = -var1.m21;
  1298.       this.m22 = -var1.m22;
  1299.    }
  1300.  
  1301.    public final void transform(Tuple3f var1) {
  1302.       float var2 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z;
  1303.       float var3 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z;
  1304.       float var4 = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z;
  1305.       var1.set(var2, var3, var4);
  1306.    }
  1307.  
  1308.    public final void transform(Tuple3f var1, Tuple3f var2) {
  1309.       float var3 = this.m00 * var1.x + this.m01 * var1.y + this.m02 * var1.z;
  1310.       float var4 = this.m10 * var1.x + this.m11 * var1.y + this.m12 * var1.z;
  1311.       var2.z = this.m20 * var1.x + this.m21 * var1.y + this.m22 * var1.z;
  1312.       var2.x = var3;
  1313.       var2.y = var4;
  1314.    }
  1315.  
  1316.    void getScaleRotate(double[] var1, double[] var2) {
  1317.       double[] var3 = new double[]{(double)this.m00, (double)this.m01, (double)this.m02, (double)this.m10, (double)this.m11, (double)this.m12, (double)this.m20, (double)this.m21, (double)this.m22};
  1318.       Matrix3d.compute_svd(var3, var1, var2);
  1319.    }
  1320.  
  1321.    public Object clone() {
  1322.       Object var1 = null;
  1323.  
  1324.       try {
  1325.          Matrix3f var4 = (Matrix3f)super.clone();
  1326.          return var4;
  1327.       } catch (CloneNotSupportedException var3) {
  1328.          throw new InternalError();
  1329.       }
  1330.    }
  1331. }
  1332.