Ejemplo n.º 1
0
        /// <summary>
        /// 根据一种四参数模型的参数推导另一种四参数模型的参数
        /// </summary>
        /// <param name="dx1">平移量(米)</param>
        /// <param name="dy1">平移量(米)</param>
        /// <param name="r1">旋转量(弧度)</param>
        /// <param name="s1">尺度(ppm)</param>
        /// <param name="mode1">输入模型</param>
        /// <param name="dx2">平移量(米)</param>
        /// <param name="dy2">平移量(米)</param>
        /// <param name="r2">旋转量(弧度)</param>
        /// <param name="s2">尺度(ppm)</param>
        /// <param name="mode2">输出模型</param>
        public static void ChangeMode(double dx1, double dy1, double r1, double s1, enumFourMode mode1,
                                      out double dx2, out double dy2, out double r2, out double s2, enumFourMode mode2)
        {
            string modeStr1 = Mode2Str(mode1);
            string modeStr2 = Mode2Str(mode2);

            ChangeMode(dx1, dy1, r1, s1, modeStr1, out dx2, out dy2, out r2, out s2, modeStr2);
        }
Ejemplo n.º 2
0
        public static string Mode2Str(enumFourMode mode)
        {
            switch (mode)
            {
            case enumFourMode.ORS:
                return("ors");

            case enumFourMode.OSR:
                return("osr");

            case enumFourMode.RSO:
                return("rso");

            case enumFourMode.SRO:
                return("sro");

            default:
                return("ors");
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 改变模型
        /// </summary>
        /// <param name="newMode"></param>
        public void ChangeMode(enumFourMode newMode)
        {
            if (Mode == newMode)
            {
                return;
            }
            else
            {
                double dx, dy, r, s;

                ChangeMode(DX, DY, R, S, Mode, out dx, out dy, out r, out s, newMode);

                DX = dx;
                DY = dy;
                R  = r;
                S  = s;

                Mode = newMode;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 根据一种四参数模型的参数推导另一种四参数模型的参数
        /// </summary>
        /// <param name="inFour">输入四参数</param>
        /// <param name="outMode">输出模型</param>
        /// <returns></returns>
        public static FourPara ChangeMode(FourPara inFour, enumFourMode outMode)
        {
            if (inFour is null)
            {
                return(null);
            }

            double dx2, dy2, r2, s2;

            ChangeMode(inFour.DX, inFour.DY, inFour.R, inFour.S, inFour.Mode, out dx2, out dy2, out r2, out s2, outMode);
            FourPara outFour = new FourPara
            {
                DX   = dx2,
                DY   = dy2,
                R    = r2,
                S    = s2,
                Mode = outMode,
            };

            return(outFour);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 将四参数变为仿射参数
 ///     仿射参数公式为
 ///     X2 = A*X1 + B*Y1 + C
 ///     Y2 = D*X1 + E*Y1 + F
 /// </summary>
 /// <param name="dx">平移量(米)</param>
 /// <param name="dy">平移量(米)</param>
 /// <param name="r">旋转量(弧度)</param>
 /// <param name="s">尺度(ppm)</param>
 /// <param name="mode">模型 三个字母,每个字母表示一个顺序 o(ffset) R(otate) S(cale) 例如powercoor模型为ors</param>
 /// <param name="A"></param>
 /// <param name="B"></param>
 /// <param name="C"></param>
 /// <param name="D"></param>
 /// <param name="E"></param>
 /// <param name="F"></param>
 public static void Four2Affine(double dx, double dy, double r, double s, enumFourMode mode, out double A, out double B, out double C,
                                out double D, out double E, out double F)
 {
     Four2Affine(dx, dy, r, s, out A, out B, out C, out D, out E, out F, Mode2Str(mode));
 }