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); }
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]; } }
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; }
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; }
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; }
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; }
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; }
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); }
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; }
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; }