Avatar billede mysitesolution Nybegynder
23. september 2006 - 13:54 Der er 6 kommentarer og
1 løsning

Tyndgekraft i kast funktion

Hej...

Sidder og vil lave noget simpel fysik i et spil, og på skolen er vi desværre ikke noget til bevægelse i et plan endnu...

Men altså, er interesseret i en metode som har 4 parametre, en kræftvektor med kastet, en værdi i Newton (vil normalt være de 9,82), vægten af objektet og til sidst en tidsværdi i hele sekunder. Den skal så retunere hvilken højde objektet har.
Avatar billede mysitesolution Nybegynder
23. september 2006 - 14:07 #1
eller endnu bedre... en hvor man kan tilføje flere forskellige kræfter
Avatar billede coderdk Praktikant
23. september 2006 - 15:01 #2
Prøv at kigge på: http://hyperphysics.phy-astr.gsu.edu/hbase/traj.html
Vægten er vel ligegyldig hvis du ikke har noget friktion?
Avatar billede nielle Nybegynder
23. september 2006 - 21:38 #3
namespace e734166
{
    class Program
    {
        static void Main(string[] args)
        {
            Coordinater startPosition;
            startPosition.x = 0;
            startPosition.y = 0;

            Hastighed startHastighed;
            startHastighed.vx = 1;
            startHastighed.vy = 1;

            Kraft tyngdeKraften;
            tyngdeKraften.Fx = 0;
            tyngdeKraften.Fy = -9.82;

            Kraft endnuEnKraft;
            endnuEnKraft.Fx = 10;
            endnuEnKraft.Fy = 1;

            Coordinater kastNr1 = kast(startPosition, startHastighed, 10, tyngdeKraften);
            Console.WriteLine("Skråt kast i almindeligt tyngdefelt: ({0}, {1})", kastNr1.x, kastNr1.y);

            Coordinater kastNr2 = kast(startPosition, startHastighed, 10, tyngdeKraften, endnuEnKraft);
            Console.WriteLine("Skråt kast i almindeligt tyngdefelt plus en ekstra kraft: ({0}, {1})", kastNr2.x, kastNr2.y);
        }

        static Coordinater kast(Coordinater startPosition, Hastighed startHastighed, double tidsVærdi, params Kraft[] krafter)
        {
            Coordinater slutPosition;

            Kraft samletKraft;
            samletKraft.Fx = 0;
            samletKraft.Fy = 0;

            foreach (Kraft kraft in krafter)
            {
                samletKraft.Fx += kraft.Fx;
                samletKraft.Fy += kraft.Fy;
            }

            double tidsVærdiSqr = tidsVærdi * tidsVærdi;

            slutPosition.x =
                startPosition.x
                + tidsVærdi * startHastighed.vx
                + 0.5 * samletKraft.Fx * tidsVærdiSqr;

            slutPosition.y =
                startPosition.y
                + tidsVærdi * startHastighed.vy
                + 0.5 * samletKraft.Fy * tidsVærdiSqr;

            return slutPosition;
        }
    }

    struct Coordinater
    {
        public double x, y;  // Positionen i enheden m.
    }

    struct Hastighed
    {
        public double vx, vy;  // Hastigheden i enheden m/s
    }

    struct Kraft
    {
        public double Fx, Fy;  // Kraften i enheden N (m*kg/s^2)
    }
}
Avatar billede mysitesolution Nybegynder
23. september 2006 - 23:22 #4
coderdk - Har også selv lidt info i min fysikbog, men synes det er halvsvært at forstå :/

nielle - må jeg lige teste :)
Avatar billede mysitesolution Nybegynder
24. september 2006 - 19:51 #5
ser ud til at virke :) opret svar :)
Avatar billede nielle Nybegynder
24. september 2006 - 20:52 #6
Svar :^)

Nu skriver du godt nok "bevæhelse i plan" ... men det er super-simpelt at udvide alt kode fra to dimensioner til tre.
Avatar billede mysitesolution Nybegynder
24. september 2006 - 21:51 #7
yup, har haft om vektorer i matematik, så der med flere krafter tænkte jeg mig ikke så meget om :/ er jo bare at plusse.

Lige pt. skal jeg kun bruge det til et 2D spil så det er helt fint med bevægelse i plan.

Men er dejligt, fordi har samlignet med formelen i min fysikbog, så det giver lidt mere mening :) tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester