Gravitacija

Sve vezano u matematiku & fiziku koja zaluta u vaš projekt.
fps
Starosjedioc!
Posts: 1012
Joined: Sat Sep 06, 2008 1:11 pm
Smallest prime number bigger than 20: 23

Re: Gravitacija

Post by fps » Mon Feb 15, 2010 10:54 pm

DragonSoul wrote:
fps wrote:kome si pricao? :lol:

prvi sam razred
Ma pitanje je bilo više retoričko, iskreno me ne zanima ko je koji razred i dal se još školuje il čeka da ga prime u starački dom XD
Što se tiče sad tvog pitanja, tu moraš malo fizikalne zakone proučiti... kad iz njih shvatiš odnos stvari u pravom svijetu, lako to nakodiraš u Pythonu.
ucimo mi sada iz fiz gravitaciju, mozemo i reci da kuzim te zakone ali nemam pojma kako to iskodirati...



sada sam i skuzio da nebi znao ni sprite gibati po kruznici :oops:

User avatar
Danijel Korent
Romulanski špijun na Zemlji
Posts: 1583
Joined: Fri Sep 05, 2008 12:35 pm
Smallest prime number bigger than 20: 23
Location: Njemacka
Contact:

Re: Gravitacija

Post by Danijel Korent » Mon Feb 15, 2010 11:02 pm

Najjednostavnija solucija:

Imas dva vektora, jedan definira smjer i brzinu orbitirajuceg tijela, drugi vektor, nazovimo ga vektor sile, ima smjer od orbitirajuceg tijela prema tijelu koji gravitacijski utjece na njega a duzina mu je jacina utjecaja tog tijela.

Svaki loop zbrojis ta dva vektora, suma vektora je novi vekor brzine orbitirajuceg objekta, pomaknes to tijelo za iznos vektora brzine i updateas vektor sile na temelju nove pozicije.

Buduci da ti u ovoj soluciji jacina gravitacije ne pada sa udaljenoscu tijela, samo tijelo ce bas uvijek biti u orbiti, u kakvoj to ovisi o pocetnom vektoru orbitirajuceg tijela (pocetna brzina i smjer)
a.k.a. Koki

User avatar
MaracKoMarac
Posts: 884
Joined: Fri Jul 31, 2009 9:09 am
Smallest prime number bigger than 20: 23
Location: Zagreb
Contact:

Re: Gravitacija

Post by MaracKoMarac » Tue Feb 16, 2010 9:24 am

http://www.cs.iupui.edu/~aharris/pygame/
Chapter 9 -> Realistic Movement.
When no one dares to whisper, shout!
Blog

fps
Starosjedioc!
Posts: 1012
Joined: Sat Sep 06, 2008 1:11 pm
Smallest prime number bigger than 20: 23

Re: Gravitacija

Post by fps » Tue Feb 16, 2010 9:41 am

MaracKoMarac wrote:http://www.cs.iupui.edu/~aharris/pygame/
Chapter 9 -> Realistic Movement.
hvala

User avatar
UDP11
Obama s Trešnjevke
Posts: 657
Joined: Thu Nov 06, 2008 2:38 pm
Smallest prime number bigger than 20: 23

Re: Gravitacija

Post by UDP11 » Tue Feb 16, 2010 9:45 am

Evo odličan primjer gravitacije sa otporom,

Code: Select all

onClipEvent (load) {
	power = 0.3;
	yspeed = 0;
	xspeed = 0;
	friction = 0.95;
	gravity = 0.1
}
 
onClipEvent (enterFrame) {
	if (Key.isDown(Key.LEFT)) {
		xspeed -= power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed += power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed -= power;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed += power;
	}
	xspeed *= friction;
	yspeed += gravity;
	_y += yspeed;
	_x += xspeed;
}
Image

User avatar
EmP
Veliki brat malih trokuta
Posts: 498
Joined: Tue Sep 01, 2009 10:14 pm
Smallest prime number bigger than 20: 23
Location: Zagreb
Contact:

Re: Gravitacija

Post by EmP » Tue Feb 16, 2010 10:45 am

Uuuu, zaglibili ste u opasne vode. Prvotno pitanje (gravitacija ko u Super Mariju) ima jednostavan odgovor:

Uz x i y pozicije objekata dodaj vx i vy brzine kojima se ti objekti kreću. Gravitaciju dodaš tak de se jednostavno smjer gravitacije dodaje na vx i vy. Primjer gravitacije prema dolje: vy = vy - g. Ostalo ti je rješavanje sudara (detektiranje da li objekt može padat). Uz to, nije loše staviti ograničenje na brzinu padanja.

Ovo s gravitacijom između 2 tijela, to vam je veći zalogaj nego što vam se čini. Tu vam se upliću numerička integracija, ODE (ordinary differentional equations) sustavi i stabilnost sustava. Veliki brojevi nisu problem, double radi s brojevime do 10^308 s preciznošću od 16 decimala tak da možete uredno cijeli poznati svemir simulirat. Puno veći problem je stabilnost. Ako simulirate s manjim korakom, u principu imat ćete manju grešku. Od greške je još gora nestabilnost. Ako vam simulacija nije stabilna, sustav će vam se raspast nakon desetak do stotinjak koraka simulacije (ovisno o udaljenosti od stabilnog područja). Greškom i stabilnošću se može upravljati spomenutim korakom simulacije (tzv. periodom integracije) i odabirom postupka numeričke integracije.

Da gornji pojmovi ne zvuče tako grdo, dat ću vam primjer Eulerovog postupka numeričke integracije:

Code: Select all

x = x + vx;
y = y + vy;
vx = vx + sila_x;
vy = vy + sila_y;
Sam Eulerov postupak izgleda jednostavno, ali analiza stabilnosti je već malo teži postupak. Ak hoćete, mogu se raspisat kasnije.

U svakom slučaju, hackovi tipa x = r*cos(kut), y = r*sin(kut) će vam skratit muke oko simulacije :)
Nexus 64213 blog - IKON: moja verzija JSONa
Stareater blog - lijepe slike kak napreduje kod

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest