Autor Beitrag
Currywurst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win XP Pro
D3 Pro, D5 Std, D6 Pers
BeitragVerfasst: Fr 31.10.03 17:32 
also ich mache grade ne kleine spiele engine,
für die objekte gibt es ein ereignis das eintritt wenn sie was vom spielfeld berühren (natürlich alles 2d)

so sieht das aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TBall.OnColMap(const AtPoint: PPoint);
begin  
  SpdX:=???;
  SpdY:=???;
end;


AtPoint sind die koordinaten relativ des zentrums des objektes, wo es was berührt hat...

wie ändern sich die geschwindigkeiten SpdX und SpdY ???

hier mal ne grafik:
mitglied.lycos.de/blaaablaaaaa/Bild.jpg

hatte das auch schonma im spotlight forum gepostet, da konnte bisher keiner helfen :-)
und bitte, versucht nicht mir was beizubrigen, von wegen "du musst doch einfach nur die vektoren......." das wird nix *g*

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Shark
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 87

98, XP
D3, D5, D7
BeitragVerfasst: Sa 01.11.03 01:30 
Wenn ich das richtig sehe, ist der Aufprallpunkt hier nicht entscheidend.
Du hast einen Geschwindigkeitsvektor vorher und nachher. Außerdem hast Du z.B. die Senkrechte zu Deiner Oberfläche.

aus Geschwindigkeitsvektor vorher und Senkrechte kannst Du Geschwindigkeitsvektor nachher ausrechnen indem Du den Winkel zwischen beiden bestimmst und den Geschwindigkeitsvektor vorher
um (180° -/+ 2*Winkel) drehst. Vorzeichen weiss ich jetzt nicht...
Currywurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win XP Pro
D3 Pro, D5 Std, D6 Pers
BeitragVerfasst: Sa 01.11.03 07:29 
ja und wie mache ich das ?? :-)
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 01.11.03 12:52 
Den Geschwindigkeitvektor hat man ja - mehr oder weniger...
Wie Shark schon sagte, braucht man jetzt noch irgendetwas von der Fläche, an der der Ball abprallt, entweder deren Neigungswinkel, oder die Senkrechte der Fläche (jupp, das eine kann man aus dem anderen ausrechnen ;-) ).
Was weißt du denn über die Fläche? Eckpunkte würden auch gehen, dann hat man eine Strecke und man kann wiederum den Winkel ausrechnen.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Currywurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win XP Pro
D3 Pro, D5 Std, D6 Pers
BeitragVerfasst: Sa 01.11.03 13:00 
dafür ist ja der punkt, das is der aufprallpunkt relativ vom zentrum des objektes, also: senkrecht zu der linie aus punkt und zentrum is die fläche, damit hat man dann deren winkel
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 01.11.03 16:19 
Ahh.
Ich dachte das wäre der Punkt absolut zum Koordinatenursprung...

Also dann.
Der Geschwindigkeitsvektor ist (XSpd | YSpd).
Die Senkrechte auf die Ebene wäre als Vektor dann (AtPoint.X | AtPoint.Y).
Der Cosinus des Winkels zwischen zwei Vektoren ist das Skalarprodukt dividiert durch das Produkt der Beträge:
ausblenden Quelltext
1:
 cos(v1, v2) = (v1 * v2) / (|v1| * |v2|)					


In unseren Punkten ausgedrückt also:
ausblenden Quelltext
1:
cos(v1, v2) = (XSpd * AtPoint.X + YSpd * AtPoint.Y) / (sqrt(XSpd² + YSpd²) * sqrt(AtPoint.X² + AtPoint.Y²))					

(Der eigentliche Winkel in Grad ist also der Arcuscosinus davon ;-) )

Nu hat man den Winkel (zumindest wenn ich mich nicht irgendwo vertan hab') und kann damit den Asutrittsvektor bestimmen, dessen Komponenten die neuen Werte für XSpd und YSpd sind.

Aber wie man jetzt einen Vektor dreht, weiß ich nicht. Aber ich versuch's mal rauszukriegen ;-)

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Currywurst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win XP Pro
D3 Pro, D5 Std, D6 Pers
BeitragVerfasst: Sa 01.11.03 16:37 
Zitat:

Der Cosinus des Winkels zwischen zwei Vektoren ist das Skalarprodukt dividiert durch das Produkt der Beträge


dazu wollt ich ja mal sagen: hey man, ich war nur realschüler und bin froh, dass ich lesen und schreiben kann! :-)

wär aber toll wenn du noch rausfindest wie man die dinger dreht... ich brauch aber erstmal zwei tage ruhe davon eh ich weiter rumprobiere damit :-)

danke!!!
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 01.11.03 19:20 
Currywurst hat folgendes geschrieben:
dazu wollt ich ja mal sagen: hey man, ich war nur realschüler und bin froh, dass ich lesen und schreiben kann! :-)

Ich würde mal sagen die sChulform hat heutzutage nicht mehr viel mit dem Wissenstand zu tun.

Aber um dich jetzt richtig zu ärgern, verrate ich dir, daß ich zwar Gymnasiast bin, aber noch in der 11. (merke: das Schuljahr hat erst vor ein paar Wochen angefangen), wo wir von Vektoren und Skalarprodukten und sonstwas im Unterricht noch rein gar nix gemacht haben (nichtmal was, was auch nur in die ungefähre Richtung geht).

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Shark
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 87

98, XP
D3, D5, D7
BeitragVerfasst: So 02.11.03 14:43 
Ohne Dich zu überfordern sieh mal z.B.:

www.iwr.uni-heidelbe...rlesung/Kapitel2.pdf