示例#1
0
        private void Turn(object sender, EventArgs e)
        {
            alpha = 100;
            t    += 0.005 * (back ? -1 : 1);
            if (t > 1)
            {
                back = true;
            }
            if (t < 0)
            {
                back = false;
            }


            p.Center = new Vector3()
            {
                x = Spline.BezierFunc(new List <double>()
                {
                    p1.x, p3.x, p4.x, p2.x
                }, t),
                y = Spline.BezierFunc(new List <double>()
                {
                    p1.y, p3.y, p4.y, p2.y
                }, t),
                z = Spline.BezierFunc(new List <double>()
                {
                    p1.z, p3.z, p4.z, p2.z
                }, t)
            };



            p.Turn.x += alpha * Math.Abs(p.Center.x / p.Center.Length);
            p.Turn.y += alpha * Math.Abs(p.Center.y / p.Center.Length);
            p.Turn.z += alpha * Math.Abs(p.Center.z / p.Center.Length);
            Draw();
            p.Turn.x -= alpha * Math.Abs(p.Center.x / p.Center.Length);
            p.Turn.y -= alpha * Math.Abs(p.Center.y / p.Center.Length);
            p.Turn.z -= alpha * Math.Abs(p.Center.z / p.Center.Length);
        }