Пример #1
0
 public void geo()
 {
     for (int i = 0; i < sustava.objekty.Length; i++)
     {
         posun[i]            = new Vektor(panel.Width / 2, panel.Height / 2);
         pozicie_pix_vykr[i] = Vektor.scitaj_vektory(Vektor.odcitaj_vektor(pozicie_pix_zakl[i], pozicie_pix_zakl[3]), posun[i]);
         pom_body[i].Add(new Point((int)pozicie_pix_vykr[i].x, (int)pozicie_pix_vykr[i].y));
     }
 }
Пример #2
0
        public static Vektor gravitacna_sila(Teleso a, Teleso b)
        {
            Vektor r                 = Vektor.odcitaj_vektor(a.pozicia, b.pozicia);
            Vektor r_jednotkovy      = Vektor.vydel_skalarom(r, Vektor.velkost_vektora(r));
            double grav_sila_velkost = G * a.hmotnost * b.hmotnost / Math.Pow(Vektor.velkost_vektora(r), 2);

            //Console.WriteLine("jednotkovy vektor: " + r_jednotkovy.x.ToString() + " "  + r_jednotkovy.y.ToString());
            //Console.WriteLine("gravitacna sila: " + Vektor.vynasob_skalarom(r_jednotkovy, grav_sila_velkost).x.ToString()+" " + Vektor.vynasob_skalarom(r_jednotkovy, grav_sila_velkost).y.ToString());
            return(Vektor.vynasob_skalarom(r_jednotkovy, -grav_sila_velkost));
        }
Пример #3
0
 public void pretypuj_polohove_vektory()
 {
     //Console.WriteLine("posun: "+ posun.x.ToString());
     for (int i = 0; i < pozicie_pix_zakl.Length; i++)
     {
         pozicie_pix_vykr[i] = Vektor.scitaj_vektory(posun[i], pozicie_pix_zakl[i]);
         pom_body[i].Add(new Point((int)pozicie_pix_vykr[i].x, (int)pozicie_pix_vykr[i].y));
         //Console.WriteLine("nove pozicie: " + pozicie_pix_vykr[i].x.ToString() + " " + pozicie_pix_vykr[i].y.ToString());
     }
 }
Пример #4
0
        //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);
            }
        }
Пример #5
0
        public void nastav_pociatocny_stav()
        {
            objekty[0].pozicia = new Vektor(0, 0);

            for (int i = 1; i < objekty.Length; i++)
            {
                objekty[i].pozicia = objekty[i].pociatocna_pozicia;
                objekty[i].sila    = new Vektor(0, 0);
                objekty[i].hybnost = Vektor.vynasob_skalarom(new Vektor(0, -1), objekty[i].hmotnost * objekty[i].zisti_init_rychlost());
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
 public static void update_sila(Teleso a, params Teleso[] zoznam)
 {
     a.sila = new Vektor(0, 0);
     for (int i = 0; i < zoznam.Length; i++)
     {
         if (a != zoznam[i])
         {
             a.sila = Vektor.scitaj_vektory(a.sila, gravitacna_sila(a, zoznam[i]));
             //Console.WriteLine(i.ToString() + " grav. sila: " + a.sila.x.ToString() + " " + a.sila.y.ToString());
         }
     }
 }
Пример #8
0
        public void helio()
        {
            double p   = 1 - sustava.objekty[last_index].excentricita;
            Vektor pom = new Vektor(sustava.objekty[last_index].hl_poloos * p, 0);

            for (int i = 0; i < sustava.objekty.Length; i++)
            {
                posun[i]    = Vektor.vynasob_skalarom(pom, k);
                posun[i].x += 50;
                posun[i].y  = panel.Size.Height / 2;
            }


            pretypuj_polohove_vektory();
        }
Пример #9
0
        //public Teleso() { }
        public Teleso(string[] zoznam, PictureBox obrazok)
        {
            kruh        = obrazok;
            viditelnost = true;

            polomer            = (Convert.ToDouble(zoznam[4])); //[r_Zeme]
            hmotnost           = (Convert.ToDouble(zoznam[1])); //[m_Zeme]
            hl_poloos          = (Convert.ToDouble(zoznam[3])); //[AU]
            excentricita       = Convert.ToDouble(zoznam[2]);
            pociatocna_pozicia = new Vektor(hl_poloos, 0);

            zisti_init_hybnost();

            stopa = true;
            sila  = new Vektor(0, 0);
        }
Пример #10
0
 public static void update_pozicia(Teleso a)
 {
     a.pozicia = Vektor.scitaj_vektory(a.pozicia, Vektor.vynasob_skalarom(Vektor.vydel_skalarom(a.hybnost, a.hmotnost), dt));
 }
Пример #11
0
 public static Vektor odcitaj_vektor(Vektor a, Vektor b)
 {
     return(new Vektor(a.x - b.x, a.y - b.y));
 }
Пример #12
0
 public void zisti_init_hybnost()
 {
     hybnost = Vektor.vynasob_skalarom(new Vektor(0, -1), hmotnost * zisti_init_rychlost());
 }
Пример #13
0
 public static Vektor vynasob_skalarom(Vektor a, double b)
 {
     return(new Vektor(a.x * b, a.y * b));
 }
Пример #14
0
 public static Vektor vydel_skalarom(Vektor a, double b)
 {
     return(new Vektor(a.x / b, a.y / b));
 }
Пример #15
0
 public static double velkost_vektora(Vektor a)
 {
     return(Math.Sqrt(Math.Pow(a.x, 2) + Math.Pow(a.y, 2)));
 }
Пример #16
0
 public static void update_hybnost(Teleso a)
 {
     //Console.WriteLine("hybnost: " + a.hybnost.x.ToString() + " " + Vektor.vynasob_skalarom(a.sila, dt).x.ToString());
     a.hybnost = Vektor.scitaj_vektory(Vektor.vynasob_skalarom(a.sila, dt), a.hybnost);
 }
Пример #17
0
 public static Vektor scitaj_vektory(Vektor a, Vektor b)
 {
     return(new Vektor(a.x + b.x, a.y + b.y));
 }