/**
         * 中心位置と辺長から、オフセット情報を作成して設定する。
         * @param i_width
         * FF16で渡すこと!
         * @param i_center
         */
        public void setSquare(long i_width, NyARFixedFloat16Point2d i_center)
        {
            long w_2 = i_width >> 1;

            NyARFixedFloat16Point3d vertex3d_ptr;

            vertex3d_ptr   = this.vertex[0];
            vertex3d_ptr.x = -w_2;
            vertex3d_ptr.y = w_2;
            vertex3d_ptr.z = 0;
            vertex3d_ptr   = this.vertex[1];
            vertex3d_ptr.x = w_2;
            vertex3d_ptr.y = w_2;
            vertex3d_ptr.z = 0;
            vertex3d_ptr   = this.vertex[2];
            vertex3d_ptr.x = w_2;
            vertex3d_ptr.y = -w_2;
            vertex3d_ptr.z = 0;
            vertex3d_ptr   = this.vertex[3];
            vertex3d_ptr.x = -w_2;
            vertex3d_ptr.y = -w_2;
            vertex3d_ptr.z = 0;

            this.point.x = -i_center.x;
            this.point.y = -i_center.y;
            this.point.z = 0;
            return;
        }
        public void ideal2Observ(NyARFixedFloat16Point2d i_in, NyARFixedFloat16Point2d o_out)
        {
            double f0 = this._factor[0];
            double f1 = this._factor[1];
            double x  = (((double)i_in.x / NyMath.FIXEDFLOAT16_1) - f0) * this._factor[3];
            double y  = (((double)i_in.y / NyMath.FIXEDFLOAT16_1) - f1) * this._factor[3];

            if (x == 0.0 && y == 0.0)
            {
                o_out.x = (long)(f0 * NyMath.FIXEDFLOAT16_1);
                o_out.y = (long)(f1 * NyMath.FIXEDFLOAT16_1);
            }
            else
            {
                double d = 1.0 - this._factor[2] / 100000000.0 * (x * x + y * y);
                o_out.x = (long)((x * d + f0) * NyMath.FIXEDFLOAT16_1);
                o_out.y = (long)((y * d + f1) * NyMath.FIXEDFLOAT16_1);
            }
            return;
        }