public QuadraticFrictionProjectile(double beta, double v0Mag)
 {
     AddEqParameter(_g, g);
     AddEqParameter(_beta, beta);
     AddEqParameter(_v0Mag, v0Mag);
     rk = new RungeKutta(updateCoordinates);
 }
        public QuadraticFrictionProjectile(double beta, double vx0, double vy0)
        {
            AddEqParameter(_g, g);
            AddEqParameter(_t, t);
            AddEqParameter(_beta, beta);
            AddDependentVariable(_theta, () => Math.Atan(vy0/vx0));
            AddDependentVariable(_x, () => xOft(this[_t]));
            AddDependentVariable(_y, () => yOft(this[_t]));

            rk = new RungeKutta(updateCoordinates);
            this.CurrentPosAndVelocity = new double[4] { 0, 0, vx0, vy0 };
            SetParameter(_t, 0);
        }
        private void InitializeComponent()
        {
            this.redBall = new System.Windows.Forms.PictureBox();
            this.blackBall = new System.Windows.Forms.PictureBox();
            this.anchor = new System.Windows.Forms.PictureBox();
            this.timer1 = new System.Windows.Forms.Timer(new System.ComponentModel.Container());
            this.SuspendLayout();
            this.l = A["l"];
            xOffset = this.Width / 2;
            yOffset = this.Height / 2;
            this.anchor.BackColor = Color.Purple;
            this.anchor.Size = new System.Drawing.Size(3, 3);
            this.anchor.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
            anchor.Location = new Point((int)xOffset, (int)yOffset);
            this.redBall.BackColor = Color.Red;
            this.redBall.Name = "picTarget";
            this.redBall.Size = new System.Drawing.Size(5, 5);
            this.redBall.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
            this.redBall.TabIndex = 0;
            this.redBall.TabStop = false;
            this.blackBall.BackColor = Color.Black;
            this.blackBall.Name = "picBall";
            this.blackBall.Size = new System.Drawing.Size(5, 5);
            this.blackBall.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
            this.blackBall.TabIndex = 1;
            this.blackBall.TabStop = false;
            this.timer1.Interval = (int)(1000*h);
            this.timer1.Enabled = true;
            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);

            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.BackColor = System.Drawing.Color.White;
            this.ClientSize = new System.Drawing.Size(392, 341);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                  this.blackBall,
                                                                  this.redBall, this.anchor});
            this.Name = "Form1";
            this.Text = "Crasher";
            this.ResumeLayout(false);
            background = new Bitmap(this.Width, this.Height);
            g = Graphics.FromImage(background);
            B = new RungeKutta(A.updateYVals);
            y = A.initialValues;
        }
 public void Evolve(double ti, double tf, double dt)
 {
     double[] yvals = initialValues;
     var series = new RungeKutta().Evaluate(ti, tf, dt, 4, yvals, updateYVals);
     var data = new PlotData(series);
     data.Graph();
 }