Ankündigung

Einklappen
Keine Ankündigung bisher.

Rotationen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rotationen

    Hallo,

    ich versuche eine Rotation zu berechnen und bin nicht wirklich erfolgreich, dank Wikipedia etlichen Tutorials u.s.w. habe ich mir die nötigen Formeln gefunden.

    irgendwo ist da aber der wurm drin, meine mathe fähigkeiten versuche ich derzeit auszubauen und lassen (noch!) etwas zu wünschen übrig


    Formel
    ny = this.y * Math.cos(r) - this.x * Math.sin(r);
    nx = this.x * Math.cos(r) - this.y * Math.sin(r);

    Resultat als Anhang...


    ich werde das Beispiel gleich auch hochladen, derzeit bin ich nicht am heimischen Rechner und habe keine Zugriff auf einen Webserver...
    Angehängte Dateien


  • #2
    Eine Rotation. Aha.


    Wovon wäre vielleicht eine sinnvolle Information.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Die trigonometrischen Funktionen erwarten den Winkel in rad (radians) und nicht in Grad. Allerdings weiß ich nicht, was du den Funktionen in deinem Code übergibst. Vermutlich musst du r noch durch PHP: deg2rad - Manual schicken, falls du das nicht schon getan hast.

      Aber erklär uns doch wirklich erstmal was du genau vorhast. Ansonsten kann man nicht viel zu deinem Problem sagen.
      http://hallophp.de

      Kommentar


      • #4
        Zitat von nikosch Beitrag anzeigen
        Wovon wäre vielleicht eine sinnvolle Information.
        2d transformation versuch 1

        von Punkten in einem koordinatensystem?

        danke Asipak ich werde es ausprobieren

        Kommentar


        • #5
          die Umrechnung hat leider auch nichts gebracht:

          2d transformation versuch 2

          das Skript läuft um den Faktor 10 schneller als v1

          _best,

          T

          Kommentar


          • #6
            von Punkten in einem koordinatensystem?
            Dann ist die nächste Frage: Worum?

            Du bist die Punkte des Objektes und den gemeinsamen Drehpunkt als absolute ANgaben in einem gemeinsamen Koordinatensystem angeben. x wird dann durch cos(winkel) und y durch sin(winkel) gebildet, wenn der Drehpunkt der Koordinatensystemnullpunkt ist;



            Was Dein Onlinebeispeil darstellen soll, weiss ich nicht wirklich.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              irgendwie hilft mir deine antwort nicht wirklich, ich habe ja diverse punkte die ich bewegen möchte. ich glaube, dass mein Fehler auf die Polarkoordinaten – Wikipedia zurückzuführen ist.

              in meinem Beispiel versuche ich die Koordinaten zu drehen, dass das nicht ganz funktioniert, seht ihr ja, nur finde ich den Fehler im Skript einfach nicht.

              Kommentar


              • #8

                Betrachten wir einen Punkt (grün), dann lässt er sich als Angabe durch den Drehpunkt (Koord-Ursprung) und einen Winkel beschreiben, sowie durch den Abstand zum Ursprung. Nehmen wir als Denkmodell den Einheitskreis an (gelb, ein Kreis mit Radius 1 Einheit), so ist der Abstand Punkt-Ursprung == 1 (er liegt ja auf dem Kreis. Aus obigen Angaben könne wir x und y bestimmen: x = cos (45Grad) == y = sin (45Grad) == 0,707…

                Für 60 Grad z.B. x = 0,5; y = 0,866

                Wenn Du jetzt keinen Einheitskreis hast, sondern bspw. Dein Quadrat 4 LE breit und hoch ist, also 2 LE jeweils auf positiver wie negativer Seite des Koord.Systems, so musst Du wiederum den Abstand zum Ursprung und den Winkel bestimmen. Der Winkel ist klar, der ist bei einem Quadrat mit Drehpunkt im Zentrum jeweils 45Grad (bzw. 45 + n*90 Grad).
                Den Abstand bestimmst Du,
                a) über den Satz des Pythagoras
                b) indem Du Dir vorstellst, dass sich der Punkt (immer noch auf dem Kreisbogen) bei Winkel = 0 Grad befindet. Der Cosinus (unser x-Wert) entspricht dann dem Abstand, weil der Cosinus von 0 == 1 ist.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Code:
                  ny = this.y * Math.cos(r) - this.x * Math.sin(r);
                  nx = this.x * Math.cos(r) - this.y * Math.sin(r);
                  Soll das der Versuch sein, mit Polarkoordinaten zu rechnen? Irgendwie machen diese Formeln auf mich gerade keinen wirklichen Sinn.
                  Warum hat denn die x-Koordinate Einfluss auf die y-Koordinate und umgekehrt?
                  Warum legst du nicht einfach einen Radius fest und änderst nur den Winkel? Dann kannst du das auch leicht über Polarkoordinaten erledigen.

                  PHP-Code:
                  <?php
                  header
                  ('Content-type: image/png');

                  $width 400;
                  $height 400;

                  $image imagecreatetruecolor($width$height);
                  imagesavealpha($imagetrue);

                  $white imagecolorallocate($image255255255);
                  $black imagecolorallocate($image000);

                  $trans_colour imagecolorallocatealpha($image000127);
                  imagefill($image00$trans_colour);

                  $r 50// radius

                  for ($i 0$i <= 360$i $i 10) {
                    
                  $x $r cos(deg2rad($i)) + 200;
                    
                  $y $r sin(deg2rad($i)) + 200;
                    
                    
                  imagefilledellipse($image$x$y55$black);
                  }

                  imagepng($image);
                  imagedestroy($image);
                  http://hallophp.de

                  Kommentar


                  • #10
                    2d transformation versuch 2

                    ny = this.y * Math.cos(r) !!!!+!!!! this.x * Math.sin(r);

                    ahje, doofer fehler, ich implementiere ds ganze mal richtig sauber, dann ist es auch verwendbar....

                    Kommentar

                    Lädt...
                    X