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(); }
//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); } }
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); } }
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(); }
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(); }