/**
  * i_in_pointを変換行列で座標変換する。
  *
  * @param i_in_point
  * @param i_out_point
  */
 public final void getPoint3d(
     final NyARFixedFloat16Point3d i_in_point, final NyARFixedFloat16Point3d i_out_point) {
   i_out_point.x =
       (this.m00 * i_in_point.x + this.m01 * i_in_point.y + this.m02 * i_in_point.z) >> 24;
   i_out_point.y =
       (this.m10 * i_in_point.x + this.m11 * i_in_point.y + this.m12 * i_in_point.z) >> 24;
   i_out_point.z =
       (this.m20 * i_in_point.x + this.m21 * i_in_point.y + this.m22 * i_in_point.z) >> 24;
   return;
 }
 /**
  * 複数の頂点を一括して変換する
  *
  * @param i_in_point
  * @param i_out_point
  * @param i_number_of_vertex
  */
 public final void getPoint3dBatch(
     final NyARFixedFloat16Point3d[] i_in_point,
     NyARFixedFloat16Point3d[] i_out_point,
     int i_number_of_vertex) {
   for (int i = i_number_of_vertex - 1; i >= 0; i--) {
     final NyARFixedFloat16Point3d out_ptr = i_out_point[i];
     final NyARFixedFloat16Point3d in_ptr = i_in_point[i];
     out_ptr.x = (this.m00 * in_ptr.x + this.m01 * in_ptr.y + this.m02 * in_ptr.z) >> 24;
     out_ptr.y = (this.m10 * in_ptr.x + this.m11 * in_ptr.y + this.m12 * in_ptr.z) >> 24;
     out_ptr.z = (this.m20 * in_ptr.x + this.m21 * in_ptr.y + this.m22 * in_ptr.z) >> 24;
   }
   return;
 }