sinus.xml

Denna kod är public domain. Om ni hittar fel eller vill ändra något i koden blir jag jätteglad om ni skickar dessa ändringar till jesper [at] fantasi [punkt] se.


<?xml version="1.0"?>
<article category="software" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="article.xsd">
  <keyword>Sinus</keyword>
  <keyword>Cosinus</keyword>
  <topic>Sinus och Cosinus</topic>
  <ingress>
    I många sammanhang när man programmerar stöter man på en funktion som
    heter sin(), eller sinus. Vanligtvis
    används denna funktion för beräkningar på cirklar och liknande
    figurer, men den kan också användas till lite roligare beräkningar
    för grafiska ändamål.
  </ingress>

  <image width="136" height="142" src="enhetsc.gif" alt="Enhetscirkeln"/>

  <text>
    Vi ska börja med att studera figuren ovan, den så kallade
    enhetscirkeln. Det är en cirkel med radien ett. I cirkeln finns en
    vinkel inritad, (den röda tårtbiten). Vid vanliga mätningar av
    vinklar med gradskiva anväder man oftast enheten grader, där ett
    varv i cirkeln är 360 grader. Vi ska dock använda en annan enhet,
    radianer. Ett varv i cirkeln är då 2*Pi radianer,
    (Pi=3,141592654...). Funktionen sinus beräknar y-värdet för
    cirkeln vid en given vinkel. Eftersom cirkeln är rund och har
    radien ett kommer vi att få en kurva som pendlar mellan 1 och -1.
    Det finns en motsvarande funktion för x-koordinaten som heter cosinus.
  </text>

  <image width="206" height="144" src="kurvor.gif" alt="Sinus och Cosinus"/>

  <codebox>
   v = 0
   do
     v = v + 0.1
     x = v * 10
     y = sin(v) * 30 + 30
     plot(x, y)
   loop
  </codebox>

  <text>
    Förskjutningen i cosinus beror på att x-värdet för cirkeln vid
    vinkeln 0 är 1 medan y-värdet är 0. Vi skapar nu en loop där
    vi låter vinkeln, v, starta
    vid 0 och sedan ökas med 0,1 för varje varv. Vi lägger till en
    funktion som ritar ut en punkt vid x<nbsp/>=<nbsp/>v<nbsp/>*<nbsp/>10 och
    y<nbsp/>=<nbsp/>sin(v)<nbsp/>*<nbsp/>30<nbsp/>+<nbsp/>30, det vill säga x-koordinaten kommer
    att öka med ett steg för varje varv och y-koordinaten kommer att
    rita ut en sinus-kurva med amplitud (höjd) 60, (orginalkurvan
    går ju mellan -1 och 1, vi multiplicerar detta med 30 och adderar
    30 så att vi får en kurva mellan 0 och 60). Siffran 30 är helt godtycklig, exakt vilken amplitud man vill ha
    på kurvan beror på vad man har för upplösning och vad man ska ha kurvan till. Genom att
    kombinera sinus och cosinus på olika sätt kan man få till många
    olika kurvor. Nedan finns några exempel. Samtliga
    figurer nedan är konstruerade på liknande sätt som exemplet ovan.
  </text>

  <image width="360" height="230" src="kurvor2.gif" alt="Mer Sinus och Cosinus"/>

  <applet class="SinTest" width="300" height="300"
          alt="Av någon anledning startade inte denna java applet där du kan testa egna sinuskurvor."/>
  <text>
    Kurvorna som vi skapar med dessa funktioner kan användas för
    att bygga upp och rotera tredimentionella objekt. Till exempel kan
    vi tänka oss att vi placerar hörnen i en kvadrat som fyra punkter på
    cirkeln och drar linjer mellan hörnen. Genom att ändra vinkeln på
    samma sätt som tidigare kan vi få kvadraten att rotera.
  </text>
</article>