[ reiser @ 10.06.2009. 09:50 ] @
Pisem neku malu igricu i imam lopticu koja treba da se odbija od zidova, verujem da je to prilicno prosto da se odradi, ali ja ne umem da izracunam ugao pod koji ona treba da se odbije.

Loptica ima angle (ugao pod kojim se krece), velocity (brzinu kojom se krece), i x i y koordinate. Ovako pomeram lopticu:

Code:
xpos = xpos + velocity * cos((pi / 180) * angle);
ypos = ypos + velocity * sin((pi / 180) * angle);


Guglao sam i nista nisam nasao sto bih umeo da iskoristim, vecina ljudi spominje xVelocity i yVelocity kao parametre za lopticu, medjutim ne kapiram koja je svrha tih parametara ako se sa koriscenjem samo angle i velocity parametara moze postici bilo koje pravolinijsko kretanje ?

Hvala unapred.
[ Mihajlo Cvetanović @ 10.06.2009. 11:36 ] @
Kad imaš delta-x i delta-y onda imaš sve što ti treba za pravolinijsko kretanje. Ne treba ti više. Odbijanje o horizontalne i vretikalne prepreke je jednostavno menjanje znaka delti-x ili delti-y. Ako je to sve što ti treba onda nemaš razloga da radiš sa matematičkim funkcijama. Tek ako imaš nekakve kose i zaobljene prepreke rad sa sinusom i kosinusom bi imao smisla.
[ reiser @ 10.06.2009. 17:31 ] @
Ok, ali bi bilo bolje da to odradim sa uglovima ipak, jer se loptica nece odbijati samo od pravih zidova. Ako moze neki codesnippet kako da se to odradi bilo bi super.
[ glorius @ 24.10.2009. 13:48 ] @
npr...

http://www.experts-exchange.co...ent/AI_Physics/Q_20658459.html

R = V - ( 2 * V [dot] N ) N

V = Normalized( Vector(xPos, yPos) )

N - normala povrsine ( pozeljno normalizovati )

R - jedinicni vektor pravca odbijanja

xpos = xpos + velocity*R.x
ypos = xpos + velocity*R.y

Tako nesto...