예제 #1
0
        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();
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
        }
예제 #4
0
 private void resetButton_Click(object sender, EventArgs e)
 {
     try
     {
         Bolygó.EnterListLockModify();
         Bolygó.lista.Clear();
     }
     finally
     {
         Bolygó.ExitListLockModify();
     }
 }
예제 #5
0
 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();
     }
 }
예제 #6
0
        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;
            }
            }
        }
예제 #7
0
 private void centerButton_Click(object sender, EventArgs e)
 {
     Bolygó.RemoveSumMomentum();
     Bolygó.MoveAll((Bolygó.GetCoM() * -1) + midPoint);
 }
예제 #8
0
 private static void doIteration(int dt)
 {
     Bolygó.Léptetések(dt);
 }
예제 #9
0
파일: Form1.cs 프로젝트: MolnAtt/Gravitacio
 private void metronom_Tick(object sender, EventArgs e)
 {
     Bolygó.Léptetések();
     Invalidate();
     időlabel.Text = t++.ToString();
 }