Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Reflektionsverhalten zweier Kreise

Reflektionsverhalten zweier Kreise

Universität / Fachhochschule

Sonstiges

Tags: Geometrie, Kollision, Kreis, reflektion

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
fhmbc

fhmbc aktiv_icon

08:07 Uhr, 07.07.2008

Antworten
Hallöchen,

bin heute zum ersten mal hier im Forum und fühle mich auch ein wenig unwohl, da Mathe eigentlich nicht zu meinen Stärken gehört. :-) Wenn ich also etwas total unlogisches oder peinliches sage, vergebt es mir bitte.

Problem ist folgendes: In Java eine Kollision zweier Kreise.

Kreis 1 ist erstmal Fix. Kreis 2 trifft Kreis 1 und wird reflektiert.

Erkennung der Kollision sollte kein Problem sein. Wenn die Länge des Vektors vom Mittelpunkt M1 zum Mittelpunkt M2< Radius K1+ Radius K2 so findet eine Kollision statt.

Mein Kreis 1 hat einen Mittelpunkt M1
Mein Kreis 2 hat einen Mittelpunkt M2 und einen Richtungsvektor R2. Der hat immer die Länge 1( das hieß Einheitsvektor oder? )

Ich muss also aus diesen 3 Vektoren M1,M2 und R2 irgendwie meinen neuen Richtungsvektor R2_NEU berechnen können. (hoffentlich)

Vielen Dank schonmal für Lösungsansätze ( in der Hoffnung das ich sie verstehe )

Mfg

Chris
Hierzu passend bei OnlineMathe:
Kreiszahl (Mathematischer Grundbegriff)
Kreis (Mathematischer Grundbegriff)
Elementare Kreisteile (Mathematischer Grundbegriff)

Online-Übungen (Übungsaufgaben) bei unterricht.de:
 
Online-Nachhilfe in Mathematik
Antwort
IchMagMatheNicht

IchMagMatheNicht aktiv_icon

10:27 Uhr, 07.07.2008

Antworten
Tach,

bei einer derartigen Kollision (Stoß) kann man das ganze anhand der Tangente an den (stehenden) Kreis berechnen. Es gilt: Einfallswinkel = Ausfallswinikel, wenn du die Tangente im Stoßpunkt wie eine Starre Wand behandelst (vorausgesetzt es handelt sich um einen idealen Stoß mit ε=1). Das mathematische überlaß ich dir :-).

MfG F.

Edit: Eine erste Idee wäre, R1 in seine Komponenten normal und tangential zur Tangente zu zerlegen, also in Richtung M1M2 und seknkrecht dazu. Wenn du jetzt einfach das Vorzeichen des Normalanteils umkehrst und das des anderen beibehälst kannst du den neuen Richtungsvektor daraus berechnen.

Nach meinem Buch gilt für die senkrechte Projektion von b¯ auf a¯:
c¯=a¯b¯a¯2a¯, wobei c¯ die Komponente von b¯ in Richtung a¯ ist. Um die Komponente von R1¯ senkrecht zur Tangente (R1Normal) zu bekommen, mußt du also für a¯ M2M1¯ nehmen und für b¯ R1¯.
Um die Komponente tangential zum Kreis zu bekommen kannst du dir ein Dreieck skizzieren und kommst auf R1Tangential¯=R1¯-R1Normal¯.
Jetzt mußt du nur noch das Vorzeichen von R1Normal umkehren und kannst dir dein R1Neu berechnen.

Ich hoff meine Überlegungen sind soweit korrekt, war jetzt n spontaner Einfall der aber funktionieren sollte.
Antwort
DK2ZA

DK2ZA aktiv_icon

20:50 Uhr, 07.07.2008

Antworten



Kreis 1 hat den Mittelpunkt M1 mit dem Ortsvektor m1 = (x1, y1) und dem Radius r1.

Kreis 2 hat den Mittelpunkt M2 mit dem Ortsvektor m2 = (x2, y2), dem Radius r2 und der Geschwindigkeit v2 = (xv2, yv2).

Eine Kollision erkennt man daran, dass

sqrt((x2-x1)² + (y2-y1)²) <= r1 + r2

Nun brauchen wir einen Vektor d = (xd, yd), der von M1 nach M2 zeigt. Dieser ist d = m2 - m1 = (x2-x1, y2-y1).

Aus d machen wir den Einheitsvektor de = (xde, yde), indem wir d durch seinen Betrag teilen:

de = d / (sqrt((x2-x1)² + (y2-y1)²))

de = (xd/sqrt((x2-x1)² + (y2-y1)²), yd/sqrt((x2-x1)² + (y2-y1)²))

de = ((x2-x1)/sqrt((x2-x1)² + (y2-y1)²), (y2-y1)/sqrt((x2-x1)² + (y2-y1)²))

Wenn man das Skalarprodukt b = v2 * de aus v2 und de bildet, erhält man den Betrag b der Komponente von v2, welche von M2 nach M1 zeigt.

b = v2 * de = xv2 * (x2-x1)/sqrt((x2-x1)²+(y2-y1)²) + yv2 * (y2-y1)/sqrt((x2-x1)²+(y2-y1)²)

Die besagte Komponente ändert bei der Reflexion von Kreis 2 an Kreis 1 ihr Vorzeichen und zeigt dann in die Gegenrichtung.

Um die Komponente von v2 umzukehren müssen wir nur ihren Gegenvektor zweimal zu v2 addieren:

v2_neu = v2 - 2 * b * de

v2_neu = (xv2, yv2) - 2 * b * ((x2-x1)/sqrt((x2-x1)²+(y2-y1)²), (y2-y1)/sqrt((x2-x1)²+(y2-y1)²))

v2_neu = ( xv2 - 2*b*((x2-x1)/sqrt((x2-x1)²+(y2-y1)²)), yv2 - 2*b*((y2-y1)/sqrt((x2-x1)²+(y2-y1)²)) )

GRUSS, DK2ZA

Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.