Example #1
0
        /// <summary>
        /// 初始化匀速贝塞尔路径运动
        /// </summary>
        /// <param name="points">贝塞尔点(0:P1, 1:P1右控制点, 2:P2_左控制点, 3: P2)</param>
        /// <param name="fullTime">完成曲线运动的期望总时间(ms)</param>
        /// <param name="interval">精度</param>
        /// <param name="UniformBezierRouteCallBack">匀速化贝塞尔点回调函数</param>
        public BezierRoute(Point[] points, int fullTime, int interval, UniformBezierRouteCallBack uniformBezierRouteCallBack)
        {
            Start          = false;
            FullTime       = fullTime;
            Interval       = interval;
            CallBack       = uniformBezierRouteCallBack;
            timer          = new Timer(interval);
            timer.Elapsed += Timer_Elapsed;
            this.points    = points;
            b3             = new Bezier_3();
            length         = b3.beze_length(points, 1);
            for (int i = 0; i < points.Length && i < 4; i++)
            {
                switch (i)
                {
                case 0: P1 = points[0]; break;

                case 1: P1_Control = points[1]; break;

                case 2: P2_Control = points[2]; break;

                case 3: P2 = points[3]; break;

                default:
                    break;
                }
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            Bezier_3 b3 = new Bezier_3();

            // 输出 t=0.5 对应的匀速 rt
            Point[] p = new Point[4];
            p[0] = new Point(100, 611);
            p[1] = new Point(300, 411);
            p[2] = new Point(400, 311);
            p[3] = new Point(500, 411);
            Console.WriteLine(b3.t2rt(p, 0.05));
        }