コード例 #1
0
        private void pbGalaxy_Click(object sender, EventArgs e)
        {
            int   iDiam             = 20;
            Point screenCoordinates = this.PointToScreen(new Point(0, 0));
            Timer tmr = new Timer();

            tmr.Interval = 4000;
            tmr.Tick    += new System.EventHandler(this.tmrBeforeDelete_Tick);
            Ball bTmp = new Ball(new double[2] {
                ((MousePosition.X - screenCoordinates.X) - ((pbGalaxy.Width) / 2)), ((screenCoordinates.Y - MousePosition.Y) + (pbGalaxy.Height / 2))
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, 1, iDiam, Color.White, Color.White, false, false, tmr, 0);
            Force fTmp = new Force(new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, 0);
            Control cTmp = new Control(System.DateTime.Now, System.DateTime.Now, 0, 0, 0, false, false, false);
            ComBall moon = new ComBall(bTmp, fTmp, cTmp);

            myBalls.Add(moon);
        }
コード例 #2
0
 private void UpdateForces(ComBall cb)
 {
     UpdateGravityForce(cb);
     for (int i = 0; i < cb.f.fTotal.Count(); i++)
     {
         cb.f.fTotal[i] = cb.f.fGravity[i] + cb.f.fOP[i];
     }
 }
コード例 #3
0
        private void UpdatePosition(ref ComBall cb)
        {
            double   fmSElapsed;
            TimeSpan dTimeElapsed;

            if (cb.c.dPLastUpdate != new DateTime())
            {
                dTimeElapsed  = System.DateTime.Now.Subtract(cb.c.dPLastUpdate);
                fmSElapsed    = dTimeElapsed.Milliseconds + (dTimeElapsed.Seconds) * 1000;
                cb.b.fPos[0] += (fmSElapsed * cb.b.fVel[0]) / 1000;
                cb.b.fPos[1] += (fmSElapsed * cb.b.fVel[1]) / 1000;
            }
            cb.c.dPLastUpdate = System.DateTime.Now;
        }
コード例 #4
0
        private void UpdateVelocity(ref ComBall cb)
        {
            double fmSElapsed;

            TimeSpan dTimeElapsed;

            if (cb.c.dVLastUpdate != new DateTime())
            {
                dTimeElapsed  = System.DateTime.Now.Subtract(cb.c.dVLastUpdate);
                fmSElapsed    = dTimeElapsed.Milliseconds + (dTimeElapsed.Seconds * 1000);
                cb.b.fVel[0] += (fmSElapsed * cb.b.fAcc[0]) / 1000;
                cb.b.fVel[1] += (fmSElapsed * cb.b.fAcc[1]) / 1000;
            }
            cb.c.dVLastUpdate = System.DateTime.Now;
        }
コード例 #5
0
        private void Form1_Load(object sender, EventArgs e)
        {
            bExVisible       = false;
            tmrFlash.Enabled = true;
            SetVisibilityOfLabels();
            InitializeSysVars();
            pbGalaxy.Dock      = DockStyle.Fill;
            pbGalaxy.BackColor = Color.Black;
            pbGalaxy.Paint    += new System.Windows.Forms.PaintEventHandler(this.pbGalaxy_Paint);
            int  iDiam = 235;
            Ball bTmp  = new Ball(new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, mySysVars.fEarthMass, iDiam, Color.Green, Color.Green, false, false, new Timer(), 0);
            Force fTmp = new Force(new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, new double[2] {
                0, 0
            }, 0);
            Control cTmp  = new Control();
            ComBall Earth = new ComBall(bTmp, fTmp, cTmp);

            myBalls.Add(Earth);

            LoadEarthImage();
            LoadMushImage();
            tmrDraw.Enabled = true;
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
        private void UpdateVelocity(ref ComBall cb)
        {
            double fmSElapsed;

            TimeSpan dTimeElapsed;
            if (cb.c.dVLastUpdate != new DateTime())
            {
                dTimeElapsed = System.DateTime.Now.Subtract(cb.c.dVLastUpdate);
                fmSElapsed = dTimeElapsed.Milliseconds + (dTimeElapsed.Seconds * 1000);
                cb.b.fVel[0] += (fmSElapsed * cb.b.fAcc[0]) / 1000;
                cb.b.fVel[1] += (fmSElapsed * cb.b.fAcc[1]) / 1000;
            }
            cb.c.dVLastUpdate = System.DateTime.Now;
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
        private void UpdatePosition(ref ComBall cb)
        {
            double fmSElapsed;
            TimeSpan dTimeElapsed;

            if (cb.c.dPLastUpdate != new DateTime())
            {
                dTimeElapsed = System.DateTime.Now.Subtract(cb.c.dPLastUpdate);
                fmSElapsed = dTimeElapsed.Milliseconds + (dTimeElapsed.Seconds) * 1000;
                cb.b.fPos[0] += (fmSElapsed * cb.b.fVel[0]) / 1000;
                cb.b.fPos[1] += (fmSElapsed * cb.b.fVel[1]) / 1000;
            }
            cb.c.dPLastUpdate = System.DateTime.Now;
        }
コード例 #8
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
        private void UpdateGravityForce(ComBall cb)
        {
            double dDiffT;
            double dDiffX;
            double dDiffY;
            double dAngle;
            double dFT;
            double dFY;
            double dFX;
            Ball Planet = myBalls[0].b;
            ComBall Moon = cb;

            dDiffX = Planet.fPos[0] - Moon.b.fPos[0];
            dDiffY = Planet.fPos[1] - Moon.b.fPos[1];

            dDiffT = Math.Sqrt(Math.Pow(dDiffX, 2) + Math.Pow(dDiffY, 2));
            dAngle = Math.Atan(dDiffX / dDiffY);

            dFT = (Planet.fMass * Moon.b.fMass) / dDiffT;

            dFX = dFT * Math.Sin(dAngle);
            dFY = dFT * Math.Cos(dAngle);

            if (dDiffX < 0 && dDiffY < 0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX > 0 && dDiffY < 0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX > 0 && dDiffY > 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = dFT * Math.Cos(dAngle);
            }
            else if (dDiffX < 0 && dDiffY > 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = dFT * Math.Cos(dAngle);
            }

            if (dDiffX == 0 && dDiffY < 0)
            {
                dFX = 0;
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX == 0 && dDiffY > 0)
            {
                dFX = 0;
                dFY = dFT * Math.Cos(dAngle);
            }
            else if (dDiffX > 0 && dDiffY ==0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = 0;
            }
            else if (dDiffX < 0 && dDiffY == 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = 0;
            }

            cb.f.fGravity[0] = dFX;
            cb.f.fGravity[1] = dFY;
        }
コード例 #9
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
 private void UpdateForces(ComBall cb)
 {
     UpdateGravityForce(cb);
     for (int i = 0; i < cb.f.fTotal.Count(); i++)
     {
         cb.f.fTotal[i] = cb.f.fGravity[i] + cb.f.fOP[i];
     }
 }
コード例 #10
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
 private void UpdateAcceleration(ComBall cb)
 {
     //a = F/m
     cb.b.fAcc[0] = cb.f.fTotal[0] / cb.b.fMass;
     cb.b.fAcc[1] = cb.f.fTotal[1] / cb.b.fMass;
 }
コード例 #11
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
        private void pbGalaxy_Click(object sender, EventArgs e)
        {
            int iDiam = 20;
            Point screenCoordinates = this.PointToScreen(new Point(0, 0));
            Timer tmr = new Timer();

            tmr.Interval = 4000;
            tmr.Tick += new System.EventHandler(this.tmrBeforeDelete_Tick);
            Ball bTmp = new Ball(new double[2] { ((MousePosition.X - screenCoordinates.X) - ((pbGalaxy.Width) / 2)), ((screenCoordinates.Y - MousePosition.Y) + (pbGalaxy.Height / 2))}, new double[2] { 0, 0 }, new double[2] { 0, 0 }, 1, iDiam, Color.White, Color.White, false, false, tmr, 0);
            Force fTmp = new Force(new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 }, 0);
            Control cTmp = new Control(System.DateTime.Now, System.DateTime.Now, 0, 0, 0, false, false, false);
            ComBall moon = new ComBall(bTmp, fTmp, cTmp);
            myBalls.Add(moon);
        }
コード例 #12
0
ファイル: Form1.cs プロジェクト: warned/Orbit_
        private void Form1_Load(object sender, EventArgs e)
        {
            bExVisible = false;
            tmrFlash.Enabled = true;
            SetVisibilityOfLabels();
            InitializeSysVars();
            pbGalaxy.Dock = DockStyle.Fill;
            pbGalaxy.BackColor = Color.Black;
            pbGalaxy.Paint += new System.Windows.Forms.PaintEventHandler(this.pbGalaxy_Paint);
            int iDiam = 235;
            Ball bTmp = new Ball(new double[2] { 0,0}, new double[2] { 0, 0 }, new double[2] { 0, 0 },mySysVars.fEarthMass, iDiam, Color.Green, Color.Green, false, false, new Timer(), 0);
            Force fTmp = new Force(new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 }, new double[2] { 0, 0 },0);
            Control cTmp = new Control();
            ComBall Earth = new ComBall(bTmp, fTmp, cTmp);
            myBalls.Add(Earth);

            LoadEarthImage();
            LoadMushImage();
            tmrDraw.Enabled = true;
        }
コード例 #13
0
 private void UpdateAcceleration(ComBall cb)
 {
     //a = F/m
     cb.b.fAcc[0] = cb.f.fTotal[0] / cb.b.fMass;
     cb.b.fAcc[1] = cb.f.fTotal[1] / cb.b.fMass;
 }
コード例 #14
0
        private void UpdateGravityForce(ComBall cb)
        {
            double  dDiffT;
            double  dDiffX;
            double  dDiffY;
            double  dAngle;
            double  dFT;
            double  dFY;
            double  dFX;
            Ball    Planet = myBalls[0].b;
            ComBall Moon   = cb;

            dDiffX = Planet.fPos[0] - Moon.b.fPos[0];
            dDiffY = Planet.fPos[1] - Moon.b.fPos[1];

            dDiffT = Math.Sqrt(Math.Pow(dDiffX, 2) + Math.Pow(dDiffY, 2));
            dAngle = Math.Atan(dDiffX / dDiffY);

            dFT = (Planet.fMass * Moon.b.fMass) / dDiffT;

            dFX = dFT * Math.Sin(dAngle);
            dFY = dFT * Math.Cos(dAngle);

            if (dDiffX < 0 && dDiffY < 0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX > 0 && dDiffY < 0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX > 0 && dDiffY > 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = dFT * Math.Cos(dAngle);
            }
            else if (dDiffX < 0 && dDiffY > 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = dFT * Math.Cos(dAngle);
            }


            if (dDiffX == 0 && dDiffY < 0)
            {
                dFX = 0;
                dFY = -(dFT * Math.Cos(dAngle));
            }
            else if (dDiffX == 0 && dDiffY > 0)
            {
                dFX = 0;
                dFY = dFT * Math.Cos(dAngle);
            }
            else if (dDiffX > 0 && dDiffY == 0)
            {
                dFX = -(dFT * Math.Sin(dAngle));
                dFY = 0;
            }
            else if (dDiffX < 0 && dDiffY == 0)
            {
                dFX = dFT * Math.Sin(dAngle);
                dFY = 0;
            }


            cb.f.fGravity[0] = dFX;
            cb.f.fGravity[1] = dFY;
        }