*/\r
package jp.nyatla.nyartoolkit.core.types.matrix;\r
\r
-import jp.nyatla.nyartoolkit.*;\r
import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
-\r
+/**\r
+ * このクラスは、3x3行列を格納します。\r
+ */\r
public class NyARDoubleMatrix33 implements INyARDoubleMatrix\r
{\r
+ /** 行列の要素値です。*/\r
public double m00;\r
+ /** 行列の要素値です。*/\r
public double m01;\r
+ /** 行列の要素値です。*/\r
public double m02;\r
+ /** 行列の要素値です。*/\r
public double m10;\r
+ /** 行列の要素値です。*/\r
public double m11;\r
+ /** 行列の要素値です。*/\r
public double m12;\r
+ /** 行列の要素値です。*/\r
public double m20;\r
+ /** 行列の要素値です。*/\r
public double m21;\r
+ /** 行列の要素値です。*/\r
public double m22;\r
+ /**\r
+ * この関数は、オブジェクトの配列を生成して返します。\r
+ * @param i_number\r
+ * 配列の長さ\r
+ * @return\r
+ * 新しいオブジェクト配列\r
+ */\r
public static NyARDoubleMatrix33[] createArray(int i_number)\r
{\r
NyARDoubleMatrix33[] ret=new NyARDoubleMatrix33[i_number];\r
return ret;\r
}\r
/**\r
- * 遅いからあんまり使わないでね。\r
- */\r
+ * この関数は、要素数9の配列を、行列にセットします。\r
+ */ \r
public void setValue(double[] i_value)\r
{\r
this.m00=i_value[0];\r
this.m22=i_value[8];\r
return;\r
}\r
+ /**\r
+ * この関数は、オブジェクトの内容をインスタンスにコピーします。\r
+ * @param i_value\r
+ * コピー元のオブジェクト\r
+ */\r
public void setValue(NyARDoubleMatrix33 i_value)\r
{\r
this.m00=i_value.m00;\r
return;\r
} \r
/**\r
- * 遅いからあんまり使わないでね。\r
+ * この関数は、要素数9の配列に、行列の内容をコピーします。\r
*/\r
public void getValue(double[] o_value)\r
{\r
o_value[8]=this.m22;\r
return;\r
}\r
+ /**\r
+ * この関数は、逆行列を計算して、インスタンスにセットします。\r
+ * @param i_src\r
+ * 逆行列を計算するオブジェクト。thisを指定できます。\r
+ * @return\r
+ * 逆行列を得られると、trueを返します。\r
+ */ \r
public boolean inverse(NyARDoubleMatrix33 i_src)\r
{\r
final double a11,a12,a13,a21,a22,a23,a31,a32,a33;\r
return true;\r
}\r
/**\r
- * この関数は、0-PIの間で値を返します。\r
+ * この関数は、行列を回転行列として、ZXY系の角度値を計算します。\r
* @param o_out\r
+ * 角度値を受け取るオブジェクトです。\r
+ * 角度値の範囲は、0-PIです。\r
*/\r
public final void getZXYAngle(NyARDoublePoint3d o_out)\r
{\r
o_out.y = Math.atan2(-this.m20, this.m22);\r
}\r
}\r
+ /**\r
+ * この関数は、行列を回転行列として、ZXY系の角度値をセットします。\r
+ * @param i_angle\r
+ * セットする角度値です。\r
+ */ \r
public final void setZXYAngle(NyARDoublePoint3d i_angle)\r
{\r
setZXYAngle(i_angle.x,i_angle.y,i_angle.z);\r
return;\r
}\r
+ /**\r
+ * この関数は、行列を回転行列として、ZXY系の角度値をセットします。\r
+ * @param i_x\r
+ * X軸の角度値\r
+ * @param i_y\r
+ * X軸の角度値\r
+ * @param i_z\r
+ * X軸の角度値\r
+ */\r
public final void setZXYAngle(final double i_x, final double i_y, final double i_z)\r
{\r
final double sina = Math.sin(i_x);\r
return;\r
}\r
/**\r
- * 回転行列を適応して座標変換します。\r
- * @param i_angle\r
+ * この関数は、3次元座標を座標変換します。\r
+ * @param i_position\r
+ * 変換する三次元座標\r
* @param o_out\r
+ * 変換後の座標を受け取るオブジェクト\r
*/\r
public final void transformVertex(NyARDoublePoint3d i_position,NyARDoublePoint3d o_out)\r
{\r
transformVertex(i_position.x,i_position.y,i_position.z,o_out);\r
return;\r
}\r
- \r
+ /**\r
+ * この関数は、3次元座標を座標変換します。\r
+ * @param i_x\r
+ * 変換する三次元座標(X)\r
+ * @param i_y\r
+ * 変換する三次元座標(Y)\r
+ * @param i_z\r
+ * 変換する三次元座標(Z)\r
+ * @param o_out\r
+ * 変換後の座標を受け取るオブジェクト\r
+ */\r
public final void transformVertex(double i_x,double i_y,double i_z,NyARDoublePoint3d o_out)\r
{\r
o_out.x=this.m00*i_x+this.m01*i_y+this.m02*i_z;\r