Diskuze: Problém Gravitace

C# .NET .NET (C# a Visual Basic) Problém Gravitace American English version English version

Aktivity (1)
Avatar
Okurkin
Člen
Avatar
Okurkin:8.6.2016 16:31

Zdravím, snažím se rozložit sílu F do sil Fx a Fy. Následně do SpeedX a SpeedY. Nemohl by někdo poradit, kde je chyba? Díky Konkrétně se jedná o počítání Newtonovy gravitace a přitahování těles (planeta a raketa [Subject1, Subject2])

public void Gravity(Subject sbjt1, Subject sbjt2) // Rozdeleni F na Fx a FY (Nejspise nekde chyba...)
        {
            double Fx = NewtonGravity(sbjt1, sbjt2) * Math.Cos(Math.PI * angleX(sbjt1,sbjt2) / 180.0);
            double Fy = NewtonGravity(sbjt1, sbjt2) * Math.Sin(Math.PI * angleY(sbjt1, sbjt2) / 180.0);

            double ax1 = Fx / sbjt1.Mass;
            double ay1 = Fy / sbjt1.Mass;
            sbjt1.SpeedX += ax1;
            sbjt1.SpeedY += ay1;

            double ax2 = Fx / sbjt2.Mass;
            double ay2 = Fy / sbjt2.Mass;

            sbjt2.SpeedX += ax2;
            sbjt2.SpeedY += ay2;
        }


public double angleX(Subject s1 ,Subject s2)
        {
            double angle;

            // vector (s1.X - s2.X, s1.Y - s2.Y)
            // vectorX (1,0)
            double radians = Math.Atan2(s1.Y - s2.Y, s1.X - s2.X);
            angle = radians * (180 / Math.PI);


            return angle;
        }
        public double angleY(Subject s1, Subject s2)
        {
            double angle;

            // vector (s1.X - s2.X, s1.Y - s2.Y)
            // vectorX (0,1)
            double radians = Math.Atan2(s1.X - s2.X, s1.Y - s2.Y);
            angle = radians * (180 / Math.PI);


            return angle;
        }
 
Odpovědět 8.6.2016 16:31
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Okurkin
Luboš Satik Běhounek:8.6.2016 17:19

Proč tam ty úhly, co ti vylezou z Atan2, převádíš na stupně? Když je pak chceš použít, tak je budeš zase muset konvertovat na zpátky radiány, protože tyhle goniometrické funkce pracují s radiány... %P

Nahoru Odpovědět 8.6.2016 17:19
:)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.