/** * 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; }