public Vector2 attract(Mover m)
        {
            Vector2 force = Vector2.Subtract(location, m.location);
            float distance = force.Length();
            if (distance > 25f)
            {
                distance = 25.0f;
            }
            else if (distance < 5.0f)
            {
                distance = 5.0f;
            }

            force.Normalize();
            float strength = (G * mass * m.mass) / (distance * distance);
            Vector2.Multiply(force, strength);

            return force;
        }
        protected override void Initialize()
        {
            // Screen Init
            graphics.IsFullScreen = false;
            graphics.PreferredBackBufferWidth = width;
            graphics.PreferredBackBufferHeight = height;
            graphics.ApplyChanges();
            Window.Title = "Exercise 2.8";
            this.IsMouseVisible = true;

            // Graphics Init
            spriteBatch = new SpriteBatch(GraphicsDevice);
            device = graphics.GraphicsDevice;
            Helpers.Drawing.init(device, spriteBatch);
            device.Clear(Color.White);

            // RenderTarget Init
            rt = new RenderTarget2D(device, width, height, true, device.DisplayMode.Format, DepthFormat.Depth24, 1, RenderTargetUsage.PreserveContents);
            device.SetRenderTarget(rt);
            device.Clear(Color.Gray);
            device.SetRenderTarget(null);

            // Objects Init
            movers = new Mover[900];
            float step = (float)width/(float)movers.Length;

            for (int i = 0; i < movers.Length; i++)
            {
                movers[i] = new Mover(200, step * i, 0, width, height);
            }

            attractors = new Attractor[1];
            attractors[0] = new Attractor(width, height);

            center = new Attractor
            //
            base.Initialize();
        }
        protected override void Initialize()
        {
            // Screen Init
            graphics.IsFullScreen = false;
            graphics.PreferredBackBufferWidth = width;
            graphics.PreferredBackBufferHeight = height;
            graphics.ApplyChanges();
            Window.Title = "Example 2.7: Attraction with many Movers";
            this.IsMouseVisible = true;

            // Graphics Init
            spriteBatch = new SpriteBatch(GraphicsDevice);
            device = graphics.GraphicsDevice;
            Helpers.Drawing.init(device, spriteBatch);

            // Objects Init
            movers = new Mover[20];
            for (int i = 0; i < movers.Length; i++)
            {
                movers[i] = new Mover(rnd.Next(1,50), rnd.Next(50, width - 50), rnd.Next(50, height - 50), width, height);
            }

            //
            base.Initialize();
        }