• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kilka pytań SFML...

Object Storage Arubacloud
0 głosów
467 wizyt
pytanie zadane 25 stycznia 2017 w C i C++ przez iWantCode Bywalec (2,170 p.)
Jak wygląda przykładowa implementacja SAT w sfml i jak działa SAT bo już nie wiem?

Jak zastosować realistyczną fizykę w grze 2D, jak obliczyć prędkość opadania, odbijanie piłek itd?.

3 odpowiedzi

+1 głos
odpowiedź 25 stycznia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Jeśli nie wiesz jak zaprogramować fizykę w grze w realny sposób, możesz użyć biblioteki Box2D.
0 głosów
odpowiedź 25 stycznia 2017 przez Pajdas Mądrala (5,930 p.)

Jak wygląda przykładowa implementacja SAT w sfml i jak działa SAT bo już nie wiem?

Internet, a jak zaimplementować... wykonać odpowiednie obliczenia, nie zawsze na wszystko będzie przykładowa implementacja.

Jak zastosować realistyczną fizykę w grze 2D, jak obliczyć prędkość opadania, odbijanie piłek itd?.

No to tutaj przyda ci się fizyka. "Jak obliczyć prędkość opadania" - wzory fizyka w gimnazjum.
https://en.wikipedia.org/wiki/Collision_response

(ja również jestem za Box2D, ale jak koniecznie chcesz spróbować... na pewno do tworzenia takiej "biblioteki" na własną rękę będzie wymagać od ciebie świetnej obiektówki)

0 głosów
odpowiedź 25 stycznia 2017 przez niezalogowany
edycja 30 sierpnia 2017

Prędkość opadania czyli np numerycznie prosta jest metoda eulera. W 1d wygląda tak:

#include <iostream>

using namespace std;

int main()
{
    double y0 = 500;
    double y = y0, v=0, a=-10, dt = 0.01; // np zmiana polozenia na ekranie co 0.01 s

    int k = 10000;
    
    for(int i=0; i<k; i++)
    {
        v += a*dt;
        y += v*dt;
    }
    cout<<y<<endl;
    double t = k*dt;
    cout<<y0+a*t*t/2<<endl; // porownanie ze wzorem z gimnazjum

    return 0;
}

Analogicznie dla dwóch wymiarów rozłożenie na wektory:

    for(int i=0; i<k; i++)
    {
        vx += ax*dt;
        vy += ay*dt;
        x += v*dt;
        y += v*dt;
    }

Zadziała gdy odpowiednio rozłożysz siły/przyśpieszenia na składowe. Zrobisz rzut ukośny. Jeżeli przyśpieszenie będzie zmieniać się w czasie np symulacja układu słonecznego to lepiej użyć coś innego (chociaż dla szczególnych warunków też będzie działać ładnie). Ale ogólnie prosty sposób - zmiana prędkości zmienia się przyśpieszenie razy czas, zmiana położenia - prędkość razy mały krok czasowy.

Podobne pytania

0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 30 września 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)
0 głosów
4 odpowiedzi 1,229 wizyt
pytanie zadane 17 sierpnia 2016 w C i C++ przez czmyk Obywatel (1,100 p.)
0 głosów
2 odpowiedzi 325 wizyt
pytanie zadane 4 czerwca 2016 w C i C++ przez maciek061 Gaduła (4,490 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...