Diskuze: Problém Gravitace

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

Avatar
Okurkin
Člen
Avatar
Okurkin:

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. června 16:31
Avatar
Odpovídá na Okurkin
Luboš Běhounek (Satik):

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. června 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.