Winkel zwischen zwei Punkten



  • David_pb schrieb:

    Winkel zwischen zwei Vektoren:

    cos(λ)=ababcos(\lambda) = \frac{\vec{a} \cdot \vec{b}}{\mid \vec{a} \mid \cdot \mid \vec{b} \mid }

    Vektoren \neq Punkte, übrigens.

    Achso, dann bezieht sich deine Formel auf Richtungsvektoren? Ich bräuchte aber den Winkel zwischen zwei Positionsvektoren (== Punkte?).



  • Is genau die selbe Formel, sind aber immer noch keine Punkte. 🙂
    grüße



  • Unser Prof. meinte mal so ungefähr: "Ein Vektor ist ja nichts anderes als ein Punkt, diese Pfeile die Physiker immer malen, sind aber auch ok." 😉



  • David_pb schrieb:

    Is genau die selbe Formel, sind aber immer noch keine Punkte. 🙂
    grüße

    Ok, aber was sind dann Punkte?

    Was bedeuten denn die Striche neben den beiden Vektoren im Nenner?

    Öppaken



  • Achso, ok. Die umstrichelten Dinger sind die Beträge der Vektoren. Was ist denn jetzt der Betrag? Alle Elemente addiert (zB. x + y)?



  • Nein der Betrag eines Vektors ist seine Länge.

    Aber am Besten du schaust mal hier http://www.mathe-online.at/mathint/vect1/i.html

    Nett aufbereitet und für Einsteiger zu empfehlen, wenn du etwas weiter rumsuchst findest du sogar etwas über Trigonometrische Funktionen und weiteres zu Vektoren, das sollte genügen. Wenn du dann so richtig geil drauf sein solltest, gibts in jeder Uni-Bibo schöne, große, dicke Bücher zur Linearen Algebra, viel Spass damit.

    tt



  • Richtig, der Betrag berechnet sich aber nicht aus der Summe der Komponenten sondern vielmehr so (Beispiel R3\mathbb R^3):
    x=x_12+x_22+x32\mid \vec{x} \mid = \sqrt{x\_1^2+x\_2^2+x_3^2}



  • Öppaken schrieb:

    eine arccos-Funktion müsste ich mir noch schreiben.

    in C/C++ gibt's das schon fertig. guckst du: http://www.cplusplus.com/ref/cmath/acos.html

    Öppaken schrieb:

    Was sind Vektorbeträge?

    betrag eines vektor bekommste, indem du alle komponenten quadrierst, dann alles zusammenzählst und zum schluss die quadratwurzel aus dieser summe berechnest. wenn du dir einen vektor als pfeil vorstellst, dann ist der betrag die länge des pfeils (also die richtungsangabe ist dann wech)



  • Ok, danke Leute. Das bringt mich weiter.



  • Wäre nett, wenn mir jetzt noch einer sagen könnte, wie ich zu dem Kosinus den Sinus kriege, bzw. eine arccos-Funktion schreiben könnte (nutze kein C++).



  • Öppaken schrieb:

    Wäre nett, wenn mir jetzt noch einer sagen könnte, wie ich zu dem Kosinus den Sinus kriege

    Trigonometrischer Pythagoras: (cosα)2+(sinα)2=1(\cos\alpha)^2 + (\sin\alpha)^2 = 1, einfach nach dem Sinus umstellen.

    bzw. eine arccos-Funktion schreiben könnte (nutze kein C++).

    Was für Mittel hast du denn zur Verfügung?



  • Bashar schrieb:

    Öppaken schrieb:

    Wäre nett, wenn mir jetzt noch einer sagen könnte, wie ich zu dem Kosinus den Sinus kriege

    Trigonometrischer Pythagoras: (cosα)2+(sinα)2=1(\cos\alpha)^2 + (\sin\alpha)^2 = 1, einfach nach dem Sinus umstellen.

    Wie gesagt, ich kann keine Formeln lesen. Wie würde die Rechnung denn in Pseudocode aussehen?

    bzw. eine arccos-Funktion schreiben könnte (nutze kein C++).

    Was für Mittel hast du denn zur Verfügung?[/quote]

    Ich habe Sinus-/Kosinusfunktion und die Standarddatentypen und -operatoren zur Verfügung.



  • Öppaken schrieb:

    Bashar schrieb:

    Öppaken schrieb:

    Wäre nett, wenn mir jetzt noch einer sagen könnte, wie ich zu dem Kosinus den Sinus kriege

    Trigonometrischer Pythagoras: (cosα)2+(sinα)2=1(\cos\alpha)^2 + (\sin\alpha)^2 = 1, einfach nach dem Sinus umstellen.

    Wie gesagt, ich kann keine Formeln lesen. Wie würde die Rechnung denn in Pseudocode aussehen?

    Wieso kannst du keine Formeln lesen? Ich nehm mal an, dass du die eine oder andere Schulklasse hinter dir hast, sonst würdest du wohl kaum mit Vektoren rumhantieren. Oder kann dein Browser einfach nur keine Grafiken anzeigen?

    Ich habe Sinus-/Kosinusfunktion und die Standarddatentypen und -operatoren zur Verfügung.

    Das ist eigentlich zu wenig. Mindestens eine der Arcus-Funktionen wär nicht schlecht, sonst musst du den arc cos aus einer unendlichen Reihe selbst zusammenbauen.



  • Öppaken schrieb:

    Ich habe Sinus-/Kosinusfunktion und die Standarddatentypen und -operatoren zur Verfügung.

    haste wenigstens sqrt()?
    wenn ja, dann guckst du: http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/decus11/110800d1/arsico.c

    ääh...sqrt.c ist da aber in dem pfad auch zu finden.



  • Bashar schrieb:

    Wieso kannst du keine Formeln lesen? Ich nehm mal an, dass du die eine oder andere Schulklasse hinter dir hast, ...

    Es soll Schulen geben, in denen mehr Wert auf Gewalt und Drogenhandel gelegt wird. Und da ich es mir nicht aussuchen konnte...

    Jetzt muss ich mir halt alles selbst beibringen.



  • Dann hau rein!



  • Hi nochmal,

    habe jetzt versucht, die Formeln in Code zu konvertieren. Rausbekommen habe ich das hier:

    // (x1, y1) und (x2, y2) sind die zweidimensionalen ortsvektoren
    
    int cos = (x1 * x2 + y1 * y2) / (sqrtf(x1 * x1 + y1 * y1) * sqrtf(x2 * x2 + y2 * y2));
    int sin = sqrtf(1.0f - (cos * cos));
    

    Was rauskommt, stimmt aber nicht (oder ich kapier's nicht). Wie kann der Winkel von einem zum anderen Vektor genauso sein wie umgekehrt?

    Das ganze ist übrigens für 2D-Auto-Aiming gedacht.

    thx



  • Ups, sin und cos sind natürlich auch float.



  • *push*



  • Öppaken schrieb:

    Was rauskommt, stimmt aber nicht (oder ich kapier's nicht). Wie kann der Winkel von einem zum anderen Vektor genauso sein wie umgekehrt?

    Wie kann er denn verschieden sein?

    Generell wäre es hilfreich, wenn Du ein bißchen ausführlicher erklärst was Du machen willst. Ich werde aus dem was Du schreibst jedenfalls nicht schlau.


Anmelden zum Antworten