/**
	 * ÉèÖÃÊýÖµ
	 * 
	 * @param matrix
	 *            Ö¸¶¨¾ØÕó
	 */
	public void setValue(Matrix3 matrix)
	{
		if (matrix == null)
		{
			return;
		}
		for (int i = 0; i < data.Length; i++)
		{
			this.data[i] = matrix.data[i];
		}
	}
	    /**
	     * 3x3矩阵与向本量m的乘积(无视W)
	     * 
	     * @param m
	     *            矩阵
	     */
	    public void multiplyBy(Matrix3 m)
	    {
		    x = (m.data[0] * x + m.data[1] * y + m.data[2] * z);
		    y = (m.data[3] * x + m.data[4] * y + m.data[5] * z);
		    z = (m.data[6] * x + m.data[7] * y + m.data[8] * z);
	    }
 public Matrix3(Matrix3 t)
 {
     setData(t.data);
 }
	/**
	 * 3x3¾ØÕóµÄÄæ¾ØÕó¼ÆËã
	 * 
	 * @return Äæ¾ØÕó
	 * @throws Exception
	 */
	public Matrix3 inverse()
	{
		float t = this.det();
		if (t == 0)
		{
			throw new Exception();
		}
		float[] b = new float[9];
		b[M00] = (data[M11] * data[M22] - data[M12] * data[M21]) / t;
		b[M01] = -(data[M01] * data[M22] - data[M21] * data[M02]) / t;
		b[M02] = (data[M01] * data[M12] - data[M02] * data[M11]) / t;
		b[M10] = -(data[M10] * data[M22] - data[M12] * data[M20]) / t;
		b[M11] = (data[M00] * data[M22] - data[M02] * data[M20]) / t;
		b[M12] = -(data[M00] * data[M12] - data[M02] * data[M10]) / t;
		b[M20] = (data[M10] * data[M21] - data[M11] * data[M20]) / t;
		b[M21] = -(data[M00] * data[M21] - data[M01] * data[M20]) / t;
		b[M22] = (data[M00] * data[M11] - data[M01] * data[M10]) / t;
		Matrix3 m = new Matrix3(b);
		return (m);
	}
	/**
	 * 3x3¾ØÕóµÄ×ó³Ë(µ±Ç°¾ØÕó×ó³Ëma)£¬²¢½«½á¹û·ÅÈëmb
	 * @param ma ×ó³Ë¾ØÕó
	 * @param mb ½á¹û¾ØÕó
	 */
	public void multiply(Matrix3 ma,Matrix3 mb)
	{
		float v00 = data[M00] * ma.data[M00] + data[M10] * ma.data[M01] + data[M20] * ma.data[M02];
		float v01 = data[M00] * ma.data[M10] + data[M10] * ma.data[M11] + data[M20] * ma.data[M12];
		float v02 = data[M00] * ma.data[M20] + data[M10] * ma.data[M21] + data[M20] * ma.data[M22];

		float v10 = data[M01] * ma.data[M00] + data[M11] * ma.data[M01] + data[M21] * ma.data[M02];
		float v11 = data[M01] * ma.data[M10] + data[M11] * ma.data[M11] + data[M21] * ma.data[M12];
		float v12 = data[M01] * ma.data[M20] + data[M11] * ma.data[M21] + data[M21] * ma.data[M22];

		float v20 = data[M02] * ma.data[M00] + data[M12] * ma.data[M01] + data[M22] * ma.data[M02];
		float v21 = data[M02] * ma.data[M10] + data[M12] * ma.data[M11] + data[M22] * ma.data[M12];
		float v22 = data[M02] * ma.data[M20] + data[M12] * ma.data[M21] + data[M22] * ma.data[M22];

		mb.data[M00] = v00;
		mb.data[M01] = v01;
		mb.data[M02] = v02;
		mb.data[M10] = v10;
		mb.data[M11] = v11;
		mb.data[M12] = v12;
		mb.data[M20] = v20;
		mb.data[M21] = v21;
		mb.data[M22] = v22;
	}
	/**
	 * 3x3¾ØÕóµÄ×ó³Ë(µ±Ç°¾ØÕó×ó³ËM)
	 * 
	 * @param ma
	 *            ¾ØÕóm
	 */
	public void multiply(Matrix3 ma)
	{
		multiply(ma,this);
	}
示例#7
0
 public Matrix3(Matrix3 t)
 {
     setData(t.data);
 }
示例#8
0
 /**
  * 3x3¾ØÕóµÄ×ó³Ë(µ±Ç°¾ØÕó×ó³ËM)
  *
  * @param ma
  *            ¾ØÕóm
  */
 public void multiply(Matrix3 ma)
 {
     multiply(ma, this);
 }