Student, Punkte: 10.78K
Hallo,
ich hatte ja eine ziemli unklar formulierte Frage zum Thema ballkollisionen geschrieben.
Nach langem Überlegen kann ich nun endlich eins meiner Kernprobleme klar formulieren:
Gegeben ein Vektor a und ein Vektor b.
Können untershcieldich lang sein, unterschiedliche Richtungen haben, Alles egal.
Der Einfahcheit halber wollen wir sagen dass wir uns beide Vektoren als Pfeile vorstellen, deren Start im ursprung liegt und die eben in ihre Betreffenden Richtungen zeigen.
Nun kann man ja hingehen und sagen:
Sei a der Richtungsvektor einer Gerade.
Im prinzip wollen wir im Bildchen Sinne den Vektor b an jener Gerade, die durch a vorgegeben wird, spiegeln.
Jenen "Spiegelvektor" hätten wir gerne.
Rein mathematisch suchen wir den zweiten Vektor b', der mit a den selben Winkel einschließt wie b, also insofern das Skalarprodukt gleich sein mpsste.
Achja, wir sind übrigens in 2d, falls ich das vergas zu erwähnen.
So meine Überlegungen:
Sei Vektor a=(a1,a2), b=(b1,b2) wie gesagt vorgegeben und der gesuchte Vektor c=(c1,c2).
bekanntlich gilt ja
a*b=cos(alpha)*|a|*|b|
wobei alpha eben der winkel zwischen den vektoren ist.
man könnte auch b*a nehmen, wäre wegen kommutativität genau dasselbe.
nun betrachten wir a*c.
weil c ja der "Spiegelvektor" von b ist, ist |c|=|b|.
Demnach ist |a|*|c| gleich.
Ebenso ist ja der Winkel dazwischen derselbe (wobei ich mir unklar bin ob hier nicht das vorzeichen vom winkel wehcseln müsste oder sowas. aber der cos davon wäre ja wegen achsensymmetrie vom cos wieder dasselbe).
Also letztlich auch cos(alpha) gleich.
nun zu a*c:
a*c=a1*c1+a2*c2
weil ja Alles Andere gleich sein mpüsste, müsste
a*c=a1*c1+a2*c2 =a*b=a1*b1+a2*b2 sein.
Also eine Gleichung mit den 2 unbekannten c1 und c2, eben den komponenten des gesuchten vektors.
Nun könnte ich hingehen, bspw. ein passendes (c1,c2) wählen, dann hingehen, es auf einheitslänge normieren und dann wieder es auf die länge von |b| strecken. ergebnis wäre der gesuchte spiegelvektor.
Das ist aber sehr umständlich und aufwendig.
Insofern wundere ich mich ob es nicht irgendeinen direkteren Weg gibt, unter Kenntnis von a und b jenen Vektor c zu bestimmen.
Schwammig ist mir bekannt dass man einen Vektor "drehen" kann um einen Winkel (counterclockwise glaube ich) wenn man ihn mit einer bestimmten Matrix multipliziert. könnte ich ergoogeln, wäre nicht das problem.
Nur ist da die Sache:
Ich weiß ja nicht wie genau a und b liegen, welcher davon gegenuhrzeigermässig weiter links oder rechts liegt und damit weiß ich nicht ob ich b nun um den doppelten winkel nahc links drehen muss oder nach rechts drehen muss damit er auf der anderen Seite von a landet.
So als Beispiel: sei a=(0,1) beschreibt also die y achse.
Nun weiß ich per se ja nicht ob b nach "oben links" zeigt, also bspw. (-1,1), dann müsste er ja um den doppelwinkel im uhrzeigersinn gedreht werden.
zeigte hingegen b nahc unten links bspw. b=(-1,-1), dann müsste b gegen den uhrzeigersinn um den winkel gedreht werden.
Das meine ich, dementsprechend müsste ich aj in der rotationsmatrix den positiven oder negativen (doppelten) winkel benutzen.
mal ganz daovn ab dass ich zur bestimmung des winkels ja den arccos eines vermutlich krummen zahl benutzen müsste, was auch nicht so cool ist.
Gibts da nicht eine elegante, direktere Methode für das Ganze, die nicht unbedingt über das Skalarprodukt geht? :-)
Eine, ebenso langwierige, Idee wäre es auch, b zu zerlegen in einen Vektoranteile der parallel zu a liegt und einen Vektor, der senkrecht zu a liegt.
dann hätte c den selben tangentialvektor und den negativen normalenvektor.
Aber davon habe ich im detial jciht viel ahnung und ershceint mir auch übermässig kompliziert für dowas relativ simples :-(
Ich will mich mal am mehrdimensionalen Fall probieren.
Also klar ist mir dass der Normalenvektor n der Geraden eben senkrecht zu a ist:
n*a=0
Nun gibt es aber so verschiedene Normalenvektoren, die radial von der Gerade nahc aussen gehen und nicht zwangsläufig durch den Punkt B gehen.
Um das weiter zu lösen, müsste ich den Lotfußpunkt bestimmen.
Gehe mich mal kurz einlesen wie das nochmal geht.
Abitur ist shcon 10 jahre her, da ist das Gedächtnis nicht mehr ganz so :-)
Melde mich dann wieder
─ densch 30.06.2021 um 17:50