--- /dev/null
+/**\r
+ * NyARSingleDetectMarkerにOpenGL向け関数を追加したもの\r
+ * (c)2008 A虎@nyatla.jp\r
+ * airmail(at)ebony.plala.or.jp\r
+ * http://nyatla.jp/\r
+ */\r
+package jp.nyatla.nyartoolkit.jogl.utils;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.NyARCode;\r
+import jp.nyatla.nyartoolkit.core.NyARParam;\r
+import jp.nyatla.nyartoolkit.core.NyARTransMatResult;\r
+import jp.nyatla.nyartoolkit.detector.*;\r
+\r
+public class GLNyARDetectMarker extends NyARDetectMarker\r
+{\r
+ private NyARTransMatResult trans_mat_result=new NyARTransMatResult();\r
+ private double view_scale_factor=0.025;//#define VIEW_SCALEFACTOR 0.025 // 1.0 ARToolKit unit becomes 0.025 of my OpenGL units.\r
+ public GLNyARDetectMarker(NyARParam i_param,NyARCode[] i_code,double[] i_marker_width,int i_number_of_code) throws NyARException\r
+ {\r
+ super(i_param,i_code,i_marker_width,i_number_of_code); \r
+ }\r
+ public void setScaleFactor(double i_new_value)\r
+ {\r
+ view_scale_factor=i_new_value;\r
+ }\r
+ /**\r
+ * @param i_index\r
+ * マーカーのインデックス番号を指定します。\r
+ * 直前に実行したdetectMarkerLiteの戻り値未満かつ0以上である必要があります。\r
+ * @param o_result\r
+ * 結果値を格納する配列を指定してください。double[16]以上が必要です。\r
+ * @throws NyARException\r
+ */\r
+ public void getCameraViewRH(int i_index,double[] o_result) throws NyARException\r
+ {\r
+ //座標を計算\r
+ this.getTransmationMatrix(i_index,this.trans_mat_result);\r
+ //行列変換\r
+ double[][] para=this.trans_mat_result.getArray();\r
+ o_result[0 + 0*4] = para[0][0]; // R1C1\r
+ o_result[0 + 1*4] = para[0][1]; // R1C2\r
+ o_result[0 + 2*4] = para[0][2];\r
+ o_result[0 + 3*4] = para[0][3];\r
+ o_result[1 + 0*4] = -para[1][0]; // R2\r
+ o_result[1 + 1*4] = -para[1][1];\r
+ o_result[1 + 2*4] = -para[1][2];\r
+ o_result[1 + 3*4] = -para[1][3];\r
+ o_result[2 + 0*4] = -para[2][0]; // R3\r
+ o_result[2 + 1*4] = -para[2][1];\r
+ o_result[2 + 2*4] = -para[2][2];\r
+ o_result[2 + 3*4] = -para[2][3];\r
+ o_result[3 + 0*4] = 0.0;\r
+ o_result[3 + 1*4] = 0.0;\r
+ o_result[3 + 2*4] = 0.0;\r
+ o_result[3 + 3*4] = 1.0;\r
+ if (view_scale_factor != 0.0) {\r
+ o_result[12] *= view_scale_factor;\r
+ o_result[13] *= view_scale_factor;\r
+ o_result[14] *= view_scale_factor;\r
+ }\r
+ return;\r
+ }\r
+}\r