Programowanie silnika Fizyki w C


(fedora24x) #1

Witam, szukałem na forum, ale nie znalazłem nic na ten temat Google odsyła do innych podobnych tematów, które nie rozwiązują tego pytania. Mianowicie jak zaprogramoać silnik fizyki w C? Uwzgledniając przestrzeń x,y,z oraz stałe...

Zadanie jest ambitne, ale powinnem sobie poradzić. Z strony fizyki i obliczeń ogarnałem wszystkie istotne oddziaływania dotykające nas na codzień :wink: ale jest problem z tego impletancją. Byłbym wdzieczny za linki do jakiś Opensourcowych projektów, lub podzielenie sie swoimi postrzeżeniami.


(kostek135) #2

Dlaczego mam wrażenie, że kłamiesz?

 

Tak jak każdy innym języku. Modelujesz równania fizyczne, analogiczne do tych jakie oddziałują na nas na co dzień. Umiesz chociaż pochodne i całki rozwiązywać na komputerze?

 

Polemizowałbym...

 

Dobrze. Zapisz mi równania na to jak będzie się zachowywać kwadratowe prześcieradło o boku x zrobione z jakiegoś włókna gdy b będę z nim biegł w normalnym ciśnieniu atmosferycznym z pędkością V, trzymając je w pewnym punkcie (a,b) ręką.

 

Oczywiście, że jest. Przecież nie umiesz nic z powyższego.

Jeśli pokażesz co zrobiłeś w praktyce i z czym masz problem, ktoś może pomoże.

 

Może zacznij sobie od czegoś prostego. Ruch wahadła matematycznego, staczanie się z równi pochyłej przy zaniedbywalnym tarciu, flaga na wietrze, ruch planet.


(fedora24x) #3

Programowałem już ruch planet, i rownie pochyła. A jak chcesz do moge dać ci screeny notatek z zeszytu w którym to rozrysowuje. Z punkty fizczno/matematycznego umiem, ale jak przeniesć na komputer?

 

Mam zamiar uwzglednić w nim:

grawitacje, opór powietrza, tarcie, optyke(światłocień*)

 

Całkować, operować na pochodnych i logarytmach umiem.

Więc teorie trzeba jakoś zamienić w kod.


(kostek135) #4

To nie rozumiem, z czym masz problem, jeśli umiesz staczać ciało po równi to musiałeś zaprogramować grawitację. Zaprogramuj sobie rzut ukośny z oporem powietrza, to tam wykorzystasz i grawitację i opór powietrza (czyli też tarcie). Jedyne czego tu nie użyjesz to światło, ale to można zrobić np. śledzeniem promieni, a w momencie zderzenia z ciałem zastosować wzór, który moduluje intensywność w zależności od kąta padania. Podejrzewam że efekt odbicia światła cię nie interesuje w początkowej fazie, więc powinno wystarczyć.


(fedora24x) #5

Problem jest w zderzeniu np. szescian spadając zachacza o inny sześcian, jak wykrywać kolizje i odbicia?

Podobna "fizyka do minecrafta" na początek by wystarczyła

Rzut poziomu = teoria AngryBirds :stuck_out_tongue_winking_eye:


(kostek135) #6

Jak poszukasz w google wykrywanie kolizji to coś znajdziesz, naprawdę. Głownie będzie to dla 2D, ale po prostu wystarczy te wzory uogólnić do wyższego wymiaru.


(fedora24x) #7

Wielkie dzięki za link, na start wystarczy. Głównie mam zamiar symulować zderzenia szescianów. Jeszcze ogarne architekture nowego środowiska (grunt, tarcie, zasade zachowania energi i pędu). Aha moze wiesz jak można symulować wiatr, oraz pophniecie(ciało a uderza w b, popyhając je) ?


(kostek135) #8


(fedora24x) #9

Ok. To więc ta litera w kształcie podobnym do U, powinna spelniać 0,16 =< U =< 0,25.

Wiecej niz 0, 25 symulacja zbytnioskacze i jest nie dokładna a mniej niz 0,016 za bardzo się ślimaczy.

 

Równie pochyłą napisałem sam, a układ planetarny poprafił mi kumpel, użył bardziej zaawansowanej

metody dla symulowanie ruchu "postępowego" niż metoda Eulera.

 

 

 

Dzięki :smiley: