bounce beregning

Tags:    programmering

Hej!

Det er egentligt mest matematik, men jeg håber i kan hjælpe!

Jeg har brug for at kunne bounce et objekt på en vilkårlig mur. Objektet har en positions-vektor og en hastigheds-vektor, som begge er 2-dimensionelle.
Hver gang programmets løkke bliver gennemløbet bliver hastigheds-vektoren lagt til positions-vektoren. Det fungerer uden problemer.
Ved en vilkårlig position rammer objektet en vilkårligt orienteret mur, og skal bounce på muren. Idet objektet rammer muren skal hastigheds vektoren have en ny retning. Heri ligger mit probelem. Jeg har prøvet på at spejle vektoren men kan ikke få vinklerne til at passe.
Det eneste jeg kender før kollisionen er hastighedsvektorens to koordinater, og dermed dens længde og retning.

Kort fortalt har jeg brug for en formel som kan få hastighedsvektoren til at pege i den rigtige retning.

Kan man overhovedet det uden at kende murens orientering?



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
altså, hvis der ikke er nogen form for påvirkning (tyngdekraft..) så kan du bare spejle den vinkel dit objekt rammer muren på.
eks:
Fold kodeboks ind/udKode 


vi siger bare for lethedens skyld at vinkel a er 45'
bolden (0) rammer muren og fortsætter derfor i den spejlede vinkel af a. altså b som er 135' (a + 90')
hvis din mur så er skrå:
Fold kodeboks ind/udKode 

ja så gør den præcis det samme! spejler vinklen.
håber mit svar hjalp.
Jakob




Indlæg senest redigeret d. 30.08.2007 17:41 af Bruger #11328
Du bliver nød til at finde ud af hvilken mur du har ramt, og så spejle den rigtige del af vektoren.

Forestil dig at du har dit objekt og fire mure, opstillet sådan her:
Fold kodeboks ind/udKode 


Hvis nu dit objekt kolidere med R eller L siden, så skal du spejle din hastighedsvektor's y-koordinaten, og hvis dit objekt kolidere med T eller D siden, spejler du x-koordinaten. Med at spejle mener jeg selvfølgelig at du ganger med -1.



Mange tak! Så langt er jeg også med, men hvis nu min "bane" ser sådan ud:
Fold kodeboks ind/udKode 

Eller noget lignende, så er det jo ikke nok kun at ændre den ene hastighedskomposant ved kollision. Problemet er at banen er helt vilkårlig. Jeg er kommet så langt at jeg har fundet ud af at hastighedsvektoren skal spejles i en linje vinkelret på muren. Men den linje er lidt svær at finde, eftersom muren er vilkårligt orienteret.

Nogen forslag?



Indlæg senest redigeret d. 10.02.2007 13:23 af Bruger #6465
t