public Form1() { DoubleBuffered = true; InitializeComponent(); b.Text = "Start"; b.Location = new Point(100, 200); Controls.Add(b); b.Click += Start_Click; t.Interval = 1; t.Tick += Tikk; Bolygó pirosbolygó = new Bolygó(new PointD(300, 200), new PointD(0, 0), Color.Red, 100); Bolygó kékbolygó = new Bolygó(new PointD(500, 200), new PointD(0, 10), Color.Blue, 20000); MainPB.Size = ClientRectangle.Size; Resize += Form1_Resize; loopTypeCB.DataSource = Enum.GetValues(typeof(runType)); globalStopwatch.Start(); MainPB.MouseWheel += MainPB_MouseWheel; setToolTips(); midPoint.X = MainPB.Width / 2; midPoint.Y = MainPB.Height / 2; //TogglePause(); }
private void GravitációsanKölcsönhat(Bolygó másik) { double dnégyzet = this.Hely.DistanceFromNégyzet(másik.Hely); PointD kettőköztivektor = this.Hely - másik.Hely; PointD kettőköztiegységvektor = (this.Hely - másik.Hely) / (Math.Sqrt(dnégyzet)); this.gravitációvektorok.Add(-1 * másik.Tömeg * kettőköztiegységvektor / dnégyzet);// -1 azért van itt, mert a másik irányba hat! másik.gravitációvektorok.Add(this.Tömeg * kettőköztiegységvektor / dnégyzet); }
private void Tikk(object sender, EventArgs e) { long thisTikkBegunAt = globalStopwatch.ElapsedTicks; int dt = deltaTime > 0 ? deltaTime : (targetFrameTime == 0 ? (int)Math.Round((thisTikkBegunAt - lastTikkBegunAt) / (Stopwatch.Frequency / 1000D)) : targetFrameTime); Bolygó.Léptetések(dt); lastTikkBegunAt = thisTikkBegunAt; Render(); }
private void resetButton_Click(object sender, EventArgs e) { try { Bolygó.EnterListLockModify(); Bolygó.lista.Clear(); } finally { Bolygó.ExitListLockModify(); } }
private void OnPaint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; try { /*e.Graphics.FillEllipse(br, (float)toAddPos.X - 20, (float)toAddPos.Y - 20, 40, 40); * e.Graphics.FillEllipse(new SolidBrush(Color.Blue), (float)midPoint.X - 5, (float)midPoint.Y - 5, 10, 10); * e.Graphics.FillEllipse(new SolidBrush(Color.Red), (float)(((toAddPos - midPoint) * renderScale) + midPoint).X - 20, (float)(((toAddPos - midPoint) * renderScale) + midPoint).Y - 20, 40, 40);*/ Bolygó.EnterListLockRead(); foreach (Bolygó bolygó in Bolygó.lista) { bolygó.Rajz(e, renderScale, midPoint); } } finally { Bolygó.ExitListLockRead(); } }
private void MainPB_MouseUp(object sender, MouseEventArgs e) { switch (e.Button) { case MouseButtons.Left: { /*Point draggingVector = e.Location - (PointD)draggingStartedAt; * * //hmpf. Awful, but at least a fun thing to do * System.Reflection.FieldInfo BPosition = typeof(Bolygó).GetField("Hely", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); * lock (Bolygó.ModifyListElementsLock) * { * try * { * Bolygó.EnterListLockRead(); * foreach (Bolygó b in Bolygó.lista) BPosition.SetValue(b, (PointD)BPosition.GetValue(b) + draggingVector); * } * finally * { * Bolygó.ExitListLockModify(); * } * }*/ Bolygó.MoveAll((e.Location - (PointD)leftDraggingStartedAt) / renderScale); break; } case MouseButtons.Right: { PointD p = (e.Location - (PointD)rightDraggingStartedAt) / (100 * renderScale); toAddVel = p; xSpeedTB.Text = p.X.ToString(); ySpeedTB.Text = p.Y.ToString(); break; } case MouseButtons.Middle: { addBolygó(); break; } } }
private void centerButton_Click(object sender, EventArgs e) { Bolygó.RemoveSumMomentum(); Bolygó.MoveAll((Bolygó.GetCoM() * -1) + midPoint); }
private static void doIteration(int dt) { Bolygó.Léptetések(dt); }
private void metronom_Tick(object sender, EventArgs e) { Bolygó.Léptetések(); Invalidate(); időlabel.Text = t++.ToString(); }