*Alex*: merkwürdige Sinuswerte

Hallo liebes Forum

Wenn ich folgendes Script laufen lasse:

  
<?php  
for($i=0;$i<=90;$i+=9){  
   $sinus=sin($i);  
   echo"sin($i) = $sinus<BR>";  
}  
?>

bekomme ich folgende Ausgabe:
sin(0) = 0
sin(9) = 0.41211848524176
sin(18) = -0.75098724677168
sin(27) = 0.9563759284045
sin(36) = -0.99177885344312
sin(45) = 0.85090352453412
sin(54) = -0.55878904885162
sin(63) = 0.16735570030281
sin(72) = 0.25382336276204
sin(81) = -0.62988799427445
sin(90) = 0.89399666360056

also eine nette Wellenbewegung.
Aber wieso???
Der Wert muss doch schrittweise von 0 - 1 steigen.
Ich denke das so wie http://de.wikipedia.org/wiki/Sinus#Definition_mit_Einheitskreis

  • wo ist der Fehler und wie bekomme ich meine gewünschten Werte?

Vielen Dank

*Alex*

  1. Hello,

    • wo ist der Fehler und wie bekomme ich meine gewünschten Werte?

    der Fehler ist, dass du nicht im Manual nachgelesen hast, welchen Parameter die Funktion erwartet.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
  2. Hallo nochmal

    Ja das mit dem Bogemaß. Alles klar!
    Aber wieso zeichnet dann dieses Script keinen ausgesparten Viertelkreis?

      
    <?php  
    for($i=0;$i<=90;$i++){  
    $sinus=sin(deg2rad($i));  
    $kreispunkt=round($sinus*90);  
      
    echo"  
    <div style=\"background-color:#ff0000; margin: 0 0 0 ".$kreispunkt."px; height: 1px\"></div>";  
    }  
    ?>
    

    Ist das ein neuer Thread?

    Nochmal Danke!

    *Alex*

    1. Korrektur

      Aber wieso zeichnet dann dieses Script keinen ausgesparten Viertelkreis?

      Ooops - ich meine natürlich:

        
      <?php  
      for($i=0;$i<=90;$i++){  
       $cosinus=cos(deg2rad($i));  
       $kreispunkt=round($cosinus*90);  
       echo"  
       <div style=\"background-color:#ff0000; margin: 0 0 0 ".$kreispunkt."px; height: 1px\"></div>";  
      }  
      ?>
      

      Aber ein ausgesparter Viertelkreis isses trotzdem nicht.
      Müsstes aber doch: http://de.wikipedia.org/wiki/Sinus#Definition_mit_Einheitskreis

      Wer kann mir helfen?

      Danke *Alex*

      1. Hallo *Alex*,

        Wer kann mir helfen?

        Ob du Sinus oder Kosunus nimmst, ist erstmal egal. Der Kreis geht dann halt nur andersrum.

        Woran es liegt, keine Ahnung, hab auch gerade kein PHP zum debuggen da.

        Jonathan

        1. Hallo Jonathan

          Ob du Sinus oder Kosunus nimmst, ist erstmal egal. Der Kreis geht dann halt nur andersrum.

          Das ist natürlich richtig, ich bezog mich in meiner Korrektur auf das Beispiel aus WIKIPEDIA, das ich verlinkt hatte.

          Woran es liegt, keine Ahnung, hab auch gerade kein PHP zum debuggen da.

          Ja, wenn mal jemand den Code in ein php stopfen und aufrufen könnte wär's toll, da sieht man nämlich sofort mein Problem...

          Irgendwo MUSS ein Denkfehler sein, wahrscheinlich ist es furchtbar einfach, aber ich sitze voll aufm Schlauch. Ich kann mir tolle Sinuskurven ausgeben lassen, aber einfach keinen Kreis - vielleicht liegts wirklich an der Verwendung von Winkelgraden statt Bogenmaß...

          Danke fürs helfen.

          *Alex*

      2. Aber ein ausgesparter Viertelkreis isses trotzdem nicht.

        Ich wüsste auch nicht, wieso da jemals ein Kreis rauskommen sollte. Du hast ja nur eine Koordinate. Um Punkte auf einer zweidimensionalen Ebene zu definieren, hast du üblicherweise zwei Koordinatenkomponenten. Und für einen Kreis bildet man die üblicherweise aus Sinus für Y und Cosinus für X.

        1. Hallo RFZ

          Du hast ja nur eine Koordinate. Um Punkte auf einer zweidimensionalen Ebene zu definieren, hast du üblicherweise zwei Koordinatenkomponenten.

          Mit Verlaub: height:1px; entspricht Y, da die jeweils 1px hohen divs ja in Y-Richtung übereinander liegen. Um die Aussparung zu erreichen brauche ich nun noch den X-Wert für den margin.

          Und für einen Kreis bildet man die üblicherweise aus Sinus für Y und Cosinus für X.

          Nicht UND sondern ODER, wenn X bzw. Y bekannt ist.

          Trotzdem vielen Dank für die freundliche Antwort.

          *Alex*

          1. Hallo *Alex*,

            Und für einen Kreis bildet man die üblicherweise aus Sinus für Y und Cosinus für X.
            Nicht UND sondern ODER, wenn X bzw. Y bekannt ist.

            Nein, RFZ hat schon recht.

            Du machst folgendes: Du gehst von 0 bis zu irgendeinem Wert und zeichnest einfach sin(x). heraus kommt dann natürlich ne normale Sinuskurve und eben kein Halbkreis. Du verwendest ganz einfach die Formel y=sin(x), x=0...π/2 (oder in dem Beispiel x = sin(y), was aber aus gleiche rauskommt).

            Einen kreis aus so einer funktion zu zeichnen geht anders, nämlich mit

            y = quadratwurzel(radius²-x²)

            Das in PHP unzusetzten überlass ich dir, ich hab wie gesagt keine Testumgebung da, und bevor ich irgendwelchen ungetesteten Mist fabriziere sag ich lieber garnichts.

            Du kannst es natürlich auch mit sin und cos machen, aber dann ist eben sin(a) die x-Koordinate und cos(a) die y-Kordinate (oder umgekehrt), das heißt, du darfst nicht einfach eine Koordinate als gegeben hinnehmen.

            Jonathan

            1. Hallo Jonathan

              y = quadratwurzel(radius²-x²)

              WOW!
              Sagte ich schon "WOW!"?
               - WOW! -

              Wieso das so ist, versucht mein kleines Hirn gerade zu kapieren, aber es funktioniert super und ich danke Dir vielmals und recht herzlich!

              *Alex*

      3. Hallo,

        <div style="background-color:#ff0000; margin: 0 0 0 ".$kreispunkt."px; height: 1px"></div>";

        entweder hat dein div zu wenig Inhalt (&nbsp;) oder ist zu kurz (width)
        www.walterzorn.de vergibt auch noch clip ( für IE)

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·
        1. Hallo plan_B

          <div style="background-color:#ff0000; margin: 0 0 0 ".$kreispunkt."px; height: 1px"></div>";

          entweder hat dein div zu wenig Inhalt (&nbsp;) oder ist zu kurz (width)

          &nbsp; killt die Höhe von 1px - auf diese referenziert sich aber der sinus/cosinus Wert. Die einzelnen divs bilden feine Linien von 1px Höhe, das stimmt also schonmal...
          Und wieso soll ich bei einem Blockelement width angeben?

          Trotzdem danke fürs antworten!

          *Alex*