Winkel berechnen, oder wie macht man das?



  • Hallo!

    Ich habe eine Grafik (Kanone), die in 32 Richtungen zeigen kann.

    Die Bilder habe ich in einem Array gespeichert.

    Jetzt möchte ich, dass die Grafik in Mausrichtung zeigt. (Also die Kanone soll in Richtung der Maus zeigen).

    Wie mach ich das?

    Irgendwie mit Winkeln, wenn ja, wie berechnet man das?

    Für Hilfe wäre ich dankbar.

    MfG
    Andreas



  • Da ich nicht genau weiß was du mit "Grafik in bestimmte Richtung" meinst nen allgemeiner Vorschlag:
    Wenn du einen Bezugspunkt und die absoluten Mauskoordinaten hast, kannst du daraus nen Richtungsvektor errechnen.



  • Und das DotProduct in Bezug zur Normalen des Bodens dürfte dir nach einigen Umformungen den Winkel geben, des quantisierst du dann auf deine ArrayIndices und schon wird das richtige Bild ausgegeben ...
    Google ist dein Freund !!!



  • edit: [doppelpost]



  • ich weiß nicht ob das ganz so mit c++ realisierbar ist, da ich von einer anderen programmiersprache komme:

    da gibt es so ne funktion atan2, der man das als Parameter übergibt: DifferenzY-DifferenzX

    dabei ist DifferenzX=|mousex-canonx|
    und DifferenzY=|mousey-canony|

    dabei erhalt man dann den winkel
    den richtigen frame ermittelst du so:

    frame=winkel*(360/32);

    ich hoffe ich konnte helfen 🙂



  • Und das DotProduct in Bezug zur Normalen des Bodens dürfte dir nach einigen Umformungen den Winkel geben, des quantisierst du dann auf deine ArrayIndices und schon wird das richtige Bild ausgegeben ...

    sorry, aber das funktioniert nicht 😉 nehmen wir an mit dotproduct sei das kreuzprodukt gemeint. jedes kreuzprodukt mit der normalen des "bodens" zeigt in richtung spieler (oder von ihm weg, kommt auf das vorzeichen an). und selbst nach diversen irren umformungen, wird dieser vektor niemals auf die maus (oder die kanone) zeigen ^^ (mir is langweilig)



  • Mit DotProduct ist ja auch das PunktProdukt gemeint, mit dem man den Winkel zwischen 2 Vektoren ausrechnen kann.



  • ups, mea culpa 😮



  • Ja, allerdings bekommt man immer den kleineren Winkel soweit ich weiss.
    Also muss man noch irgendwie manuell prüfen ob der Mauszeiger links oder rechts
    von der Kanone steht und ein Paar Grad rauf oder runter rechnen.


Anmelden zum Antworten