Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

21

05.01.2015, 20:30

Super, brav, ihr zwei habt richtig was geleistet. Schämt euch. Wir sind hier nicht bei 4chan. Da könnt Ihr solchen Mist gern machen.

(PS: Es heißt Angle nicht Angel, das wollten die beiden auf sehr unschöne Art mitteilen)


Aha, aber wenn die Leute von der Forensoftware auf gleichartige Fehler hingewiesen werden und nicht einmal einen Anhaltspunkt haben, was denn nun falsch sein soll, dann ist das ok?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

22

05.01.2015, 20:32

Also ich muss sagen nun bin ich verwirrter als zuvor. ?(
Ich verstehe nicht ganz was atan2 tut. Und auch nicht was in KeksXs Formel berechnet wird ( atan2(sin(zielwinkel - ausgangswinkel), cos(zielwinkel - ausgangswinkel)) ).


@Koschi
Dein Vorschlag kann nicht in meinem Fall nicht angewendet werden, da WantedRotation keine negativen Werte annehmen kann (Übrigens ist auch in dem Code den du gepostet hast noch der Fehler mit der Angel ;) ).




Ich würde euch darum bitten es noch einmal für einen ganz verwirrten Hobby-Programmierer zu erklären.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

23

05.01.2015, 20:37

atan2 ist der arkustangens über x und y, wenn ich das richtig im Kopf habe. Es liefert wenn du so willst den Winkel eines Vektors XY zum Vektor 1;0, und zwar den kleineren. Dieser ist dann in Radianten. Mathematisch war das soweit ich dass noch weiß die Unkehrfunktion vom Tangens, der ja die Abhängigkeit von Ankathete zu Gegenkathete im Rechtwinkligen Dreieck beschreibt.

24

05.01.2015, 20:39


@Koschi
Dein Vorschlag kann nicht in meinem Fall nicht angewendet werden, da WantedRotation keine negativen Werte annehmen kann (Übrigens ist auch in dem Code den du gepostet hast noch der Fehler mit der Angel ;) ).



WantedRotation wird ja auch nicht negativ.

Angle = Rotation - WantedRotation;

und dann die Fälle Unterscheiden für Angle.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

05.01.2015, 21:17

atan() berechnet einfach nur den Arkustangens. In deinem Fall müsstest du danach selbst erst noch bestimmen, in welchem Quadranten du dich befindest und den Winkel anpassen, damit alles konsistent ist, da der einfache atan() diese Information nicht liefert. atan2() macht das für dich.

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

26

05.01.2015, 21:20

Koschis Vorschlag funktioniert. Ich habe das ganze jetzt so umgesetzt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if (static_cast<int> (Rotation) != static_cast<int> (WantedRotation))
    {

        int Angle = static_cast<int> (Rotation - WantedRotation);

        if (180 > Angle && Angle > 0)
            Rotation -= GetRotationSpeed (); // -

        if (180 < Angle && Angle < 360)
            Rotation += GetRotationSpeed (); // +

        if (-180 < Angle && Angle < 0)
            Rotation += GetRotationSpeed (); // +

        if (-180 > Angle && Angle > -360)
            Rotation -= GetRotationSpeed (); // -

    }

    if (Rotation > 360)
        Rotation -= 360;

    if (Rotation < 0)
        Rotation += 360;


Danke für eure Hilfe. :thumbsup:

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

Werbeanzeige