コード例 #1
0
ファイル: Vesmir.cs プロジェクト: KatDan/SolarSystem
 public void vytvor_slnecnu_sustavu(List<Teleso> objekty)
 {
     bool pom = sustava.mod;
     sustava = new Sustava(G,dt,objekty_k_dispozicii);
     sustava.mod = pom;
     sustava.nastav_pociatocny_stav();
     kresli = new Vykreslovanie(sustava, plocha);
     plocha.Invalidate();
 }
コード例 #2
0
ファイル: Vykreslovanie.cs プロジェクト: KatDan/SolarSystem
        //prenasobi skutocne hodnoty konstantou
        public void preskaluj(Sustava sus)
        {
            for (int i = 0; i < pozicie_pix_zakl.Length; i++)
            {
                pozicie_pix_zakl[i] = Vektor.vynasob_skalarom(sus.objekty[i].pozicia, k);

                pozicie_pix_zakl[i].x = Math.Round(pozicie_pix_zakl[i].x);
                pozicie_pix_zakl[i].y = Math.Round(pozicie_pix_zakl[i].y);
            }
        }
コード例 #3
0
ファイル: Vykreslovanie.cs プロジェクト: KatDan/SolarSystem
        public Vykreslovanie(Sustava sus, Panel pan)
        {
            t                 = 0;
            stopa             = new bool[sus.objekty.Length];
            posun             = new Vektor[sus.objekty.Length];
            sustava           = sus;
            telesa            = new PictureBox[sus.objekty.Length];
            pozicie_pix_zakl  = new Vektor[sus.objekty.Length];
            pozicie_pix_vykr  = new Vektor[sus.objekty.Length];
            polomery_pix      = new int[sus.objekty.Length];
            pom_body          = new List <Point> [sus.objekty.Length];
            vychodzia_pozicia = new Vektor[sus.objekty.Length];

            last_index = sus.objekty.Length - 1;

            //polomery_pix = new int[sus.objekty.Length];
            panel = pan;
            double pom1 = panel.Size.Height - 40;
            double pom2 = sus.objekty[last_index].hl_poloos * 2;

            k = pom1 / pom2;
            //Console.WriteLine(k);
            g = panel.CreateGraphics();

            for (int i = 0; i < sus.objekty.Length; i++)
            {
                pom_body[i] = new List <Point>();
            }

            preskaluj(sus);
            pen = new Pen(Brushes.Red);

            //potial ok

            if (sustava.mod == true)
            {
                helio();
            }
            else
            {
                geo();
            }
            //pretypuj_polohove_vektory();

            for (int i = 0; i < sus.objekty.Length; i++)
            {
                telesa[i]            = sustava.objekty[i].kruh;
                telesa[i].Location   = new Point((int)(pozicie_pix_vykr[i].x - polomery_pix[i]), (int)(pozicie_pix_vykr[i].y - polomery_pix[i]));
                stopa[i]             = sus.objekty[i].stopa;
                vychodzia_pozicia[i] = new Vektor(telesa[i].Location.X, telesa[i].Location.Y);

                //Console.WriteLine("rectangle: " + telesa[i].X + " " + telesa[i].Y + " " + telesa[i].Width + " " + telesa[i].Height);
            }
        }
コード例 #4
0
ファイル: Vesmir.cs プロジェクト: KatDan/SolarSystem
        public void tick(object sender, EventArgs e)
        {
            Console.WriteLine("tick");
            Console.WriteLine(sustava.mod.ToString());

            for (int i = 1; i < sustava.objekty.Length; i++)
            {
                Teleso a = sustava.objekty[i];
                Sustava.update_sila(a, sustava.objekty);
                Sustava.update_hybnost(a);
                Sustava.update_pozicia(a);
                //Console.WriteLine("nova pozicia planety: " + a.pozicia.x.ToString() + " " + a.pozicia.y.ToString());
            }
            kresli.preskaluj(sustava);
            kresli.updateni_pozicie();
            //timer.Stop();
            t += dt;
            cas.Text ="Day: " + ((int)(t / 86400)).ToString() +"\nYear: " + ((int)(t / 31557600)).ToString();
            cas.Update();
            //Console.ReadLine();

        }
コード例 #5
0
ファイル: Vesmir.cs プロジェクト: KatDan/SolarSystem
        public Vesmir()
        {
            plocha = new Panel
            {
                Size = new Size(1400, 950),
                Location = new Point(5, 10),
                BackColor = Color.Black,
            };
            Controls.Add(plocha);
            plocha.Visible = false;

            cas = new Label
            {
                Parent = plocha,
                Location = new Point(plocha.Location.X + 10, plocha.Location.Y + 10),
                AutoSize = true,
                BackColor = Color.Black,
                ForeColor = Color.White,
                Text = "Day: 0\nYear: 0"
            };
            Controls.Add(cas);
            cas.BringToFront();


            //obrazky planet
            {
                slnko_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    Image = Properties.Resources.slnko1,
                    //BackColor = Color.Black,
                    Parent = plocha,

                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(slnko_pic);
                slnko_pic.Visible = false;

                merkur_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    BackColor = Color.Transparent,
                    Parent = plocha,
                    Image = Properties.Resources.merkur,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(merkur_pic);
                merkur_pic.Visible = false;

                venusa_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    Parent = plocha,
                    Image = Properties.Resources.venusa,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(venusa_pic);
                venusa_pic.Visible = false;

                zem_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    Parent = plocha,
                    Image = Properties.Resources.zem,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(zem_pic);
                zem_pic.Visible = false;

                mars_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    Parent = plocha,
                    Image = Properties.Resources.mars,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(mars_pic);
                mars_pic.Visible = false;

                jupiter_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    Parent = plocha,
                    Image = Properties.Resources.jupiter,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(jupiter_pic);
                jupiter_pic.Visible = false;

                saturn_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    BackColor = Color.Transparent,
                    Parent = plocha,
                    Image = Properties.Resources.saturn,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(saturn_pic);
                saturn_pic.Visible = false;

                uran_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    BackColor = Color.Transparent,
                    Parent = plocha,
                    Image = Properties.Resources.uran,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(uran_pic);
                uran_pic.Visible = false;

                neptun_pic = new PictureBox
                {
                    Size = new Size(30, 30),
                    Location = new Point(0, 0),
                    BackColor = Color.Transparent,
                    Parent = plocha,
                    Image = Properties.Resources.neptun,
                    SizeMode = PictureBoxSizeMode.StretchImage,
                };
                Controls.Add(neptun_pic);
                neptun_pic.Visible = false;
            }
           
            G = 6.67 * Math.Pow(10, -11);
            G = G * (5.972 / 3.375) * Math.Pow(10, -9);

            //nacitanie vstupu
            {
                var data = Properties.Resources.planety.Split(Convert.ToChar("\n"));

                //nazov, m, e, a, r

                Slnko = new Teleso(data[1].Split(), slnko_pic);
                Merkur = new Teleso(data[2].Split(), merkur_pic);
                Venusa = new Teleso(data[3].Split(), venusa_pic);
                Zem = new Teleso(data[4].Split(), zem_pic);
                Mars = new Teleso(data[5].Split(), mars_pic);
                Jupiter = new Teleso(data[6].Split(), jupiter_pic);
                Saturn = new Teleso(data[7].Split(), saturn_pic);
                Uran = new Teleso(data[8].Split(), uran_pic);
                Neptun = new Teleso(data[9].Split(), neptun_pic);

            }
            
            objekty_k_dispozicii = new Teleso[] { Slnko, Merkur, Venusa, Zem, Mars, Jupiter, Saturn, Uran, Neptun};
            viditelne_objekty = new List<Teleso>();

            viditelne_objekty.Add(Slnko);
            viditelne_objekty.Add(Merkur);
            viditelne_objekty.Add(Venusa);
            viditelne_objekty.Add(Zem);
            viditelne_objekty.Add(Mars);
            viditelne_objekty.Add(Jupiter);
            viditelne_objekty.Add(Saturn);
            viditelne_objekty.Add(Uran);
            viditelne_objekty.Add(Neptun);

            //mod = true;
            sustava = new Sustava(G, dt, objekty_k_dispozicii);

            //posledne presne pre neptun: dt = 1000000
            dt = 300000;
            t = 0;         

            zapnut = new Button
            {
                Location = new Point(500, 500),
                Size = new Size(400, 50),
                Text = "Start the simulation",
                Parent = plocha
            };
            Controls.Add(zapnut);
            zapnut.BringToFront();            
            zapnut.Click += new EventHandler(zapnut_Click);
            //zapnut.Visible = false;

            reset = new Button
            {
                Size = new Size(200,45),
                Location = new Point(1675,15),
                Text = "Reset",
                Font = new Font(Font.FontFamily, 12)
            };
            Controls.Add(reset);
            reset.Click += new EventHandler(reset_Click);
            
            mode = new Button
            {
                Text = "Mode: Heliocentric",
                Location = new Point(1450,70),
                Size = new Size (430,40),
                Font = new Font(Font.FontFamily,12)
            };
            Controls.Add(mode);
            mode.Click += new EventHandler(mode_Click);

            timer = new Timer
            {
                Interval = 1,
            };
            timer.Tick += new EventHandler(tick);
            //timer.Start();

            start_stop = new Button
            {
                Location = new Point(1450, 15),
                Size = new Size(200,45),
                Text = "Start",
                Font = new Font(Font.FontFamily, 12)
            };
            Controls.Add(start_stop);
            start_stop.Click += new EventHandler(start_stop_Click);

            kresli = new Vykreslovanie(sustava, plocha);

            //kresli.preskaluj(sustava);
            //kresli.helio();

            sustava.mod = true;

            InitializeComponent();
        }