Spirografi

Spirografi (spirograph) on geometrinen piirustuslaite, joka löytyy monesta vähänkään isommasta marketista askartelu- tai leluhyllystä aika edulliseen hintaan. Spirographin idea on se, että ulompi ympyrän muotoinen kehikko, jossa on hammasrattaat, kiinnitetään mukana tulevalla kitillä paperiin ja toinen ympyrän muotoinen ratas laitetaan tämän kehikon sisälle tai ulkopuolelle. Ympyrän muotoisessa rattaassa on reikiä eri säteen etäisyydellä ympyrän keskipisteestä, josta voi laittaa kynän läpi. Kun sisempi, ympyrän muotoinen ratas pyörii ulomman kehikon ympäri, niin kynä muodostaa liikkuessaan suljetun itseään leikkaavan viivan. Tätä syntynyttä kuviota nimitetään hypotrokoidiksi. Kuvion muoto riippuu sisemmän ympyrän ja ulomman kehikon rattaiden suhteesta, sekä kynän paikasta sisemmällä rattaalla. [1]

spirografilla piirtäminen käytännössä
Kuva 1: Kuvassa uloimmassa kehikossa on 105 ratasta ja sisemmässä ympyrässä on 63 ratasta. Kun valitaan 15 reikä ja pyöräytetään ympyrän muotoista kehikkoa, niin lopputuloksena on hypotrokoidi eli ns. rulettikäyrä, jossa on viisi ellipsin muotoista kaarta. Pienellä harjoittelulla saadaan piirrettyä näyttäviä lopputuloksia. Kuva: Tuomo Riekkinen.

Vuonna 1827 englantilainen arkkitehti ja insinööri Peter Hubert Desvignes kehitti ja mainosti ”Speiragraphia” laitteena, jolla voitiin piirtää monimutkaisia spiraalipiirustuksia. Eri henkilöt hänen jälkeensä ovat kehitelleet laitetta edelleen. Spirografi on ollut leluhyllyssä myytävänä ensimmäisen kerran 1965, jonka kehitti brittiläinen insinööri Denys Fisher ja niinpä tätä laitetta myytiin hänen omalla tuotemerkillä oman firman kautta. Sprirografi laitteen myyntioikeudet leluvalmistaja Hasbro Inc:in on ostanut Danys Fisheriltä vuonna 1998. Kaupassa myytävän laitteen valmistaja maksaa lisenssimaksut Hasbrolle.

Voisiko tietokoneen laittaa piirtämään hypotrokoidista kuviota kuten kaksi hammasrattailla varustettua kiekkoa? Se on itse asiassa helppo toteuttaa ohjelmointikielellä, jossa mukana on xy-koordinaatisto. Sellainen löytyy esimerkiksi Scratchissä, mutta Scratch on huono valinta tähän tarkoitukseen, koska Scratch:ssä kulmat muuttuvat välillä 0°…180° ja –180°…0°, joka tekee piirtämisestä hieman hankalampaa. Joten valitsemme ohjelmointikieleksi P5js-ohjelmointikielen, jossa kulmat kasvavat asteikolla 0°…360°. Lisäksi tarvitsemme laskukaavan, kuinka xy-koordinaatit lasketaan sisemmässä ympyrässä. Nämä laskukaavat ovat muotoa:

$$x=R[(1-k)\cdot \cos \theta+L\cdot k\cdot \cos \frac{1-k}{k}\cdot \theta ]$$

$$y=R[(1-k)\cdot \sin \theta – L\cdot k\cdot \sin \frac{1-k}{k}\cdot \theta ]$$

missä

$R$ = ympyrän säde

$k$ = rattaiden hammasten suhde = $\frac{sisempi ratas}{ulompi ratas}$,

$L$ = kynän paikka rattaassa, 0 < $L$ < 1.

$\theta$ = kulma, 0 ≤ $\theta$ ≤ 360. [1]

Tehdään tämän laskukaavan perusteella P5js-ohjelma, joka näyttää seuraavanlaiselta:

var kulma = 0;    // Alkuarvo, älä muuta (laskuri)
var sade = 300;   // Ympyrän säde
var paikka = 0.5; // Kynän paikka. Saa arvoja 0.1 ... 0.9
var k = 63/105;   // Rattaiden suhde
function setup() {
  createCanvas(602, 602);    // Ikkunan koko
  background(240);           // Taustaväri vaalean harmaa
  angleMode(DEGREES);        // Kulma-asteikko käytössä
  strokeWeight(3);           // Reunaviivan paksuus
  stroke(255,0,0);           // Reunaviivan väri punainen
  ellipse(300,300,600,600);  // Piirrä ympyrä, jonka halkaisija on 600
}

function draw() {
  translate(width/2, height/2);    // Origo-ikkunan keskelle
  rotate(55);                      // Aloituskulma
  kulma++;                         // Kasvata laskuria
  var x = sade*((1-k)*cos(kulma) + paikka*k*cos((1-k)*kulma/k))
  var y = sade*((1-k)*sin(kulma) - paikka*k*sin((1-k)*kulma/k))
  point(x, y);                     // Piirrä pisteitä, joista muodostuu käyrä
}

Katso toimiva esimerkki koodista: https://editor.p5js.org/riekkinen/sketches/vtjWQPiAM

Ohjelmassa kulma on laskurimuuttuja. Laskurimuuttujan arvo kasvaa aina yhdellä, koska draw-lohko on ikuisessa silmukassa. Kun kulma kasvaa jatkuvasti, niin samalla saamme laskettua pisteiden (x, y) uusia arvoja jatkuvasti xy-koordinaatistossa. Piste voidaan piirtää point(x,y); komennolla. Näistä pisteistä muodostuu haluttu kuvio. Kokeile muuttaa paikka ja k muuttujien arvoja, jotka ovat heti ohjelman alussa. Havainnollistetaan vielä ohjelman toimivuutta muutamien esimerkkien avulla.

esimerkkejä koneella piirretyistä spirografeista
Kuva 2: Kynän paikka voi saada arvoja nollan ja ykkösen väliltä. Nolla tarkoittaa, että ollaan lähellä sisäkkäisen ympyrän keskipistettä ja yksi tarkoittaa, että ollaan lähellä sisäkkäisen ympyrän kehää. Kynän paikka muuttaa kuvion muotoa, kuten kuvista voi havaita.
esimerkkejä koneella piirretyistä spirografeista. Spirograph on geometrinen piirustuslaite.
Kuva 3: Rattaiden suhde muuttaa kuvion muotoa. Tässä on muutettu vain sisemmän ympyrän rattaiden lukumäärää. Ulkoympyrän rattaiden lukumäärä on tässä 105 ja kynän paikka on 0.5.

Erilaisten variaatioiden määrä tietokoneella piirrettäessä saadaan paljon suuremmaksi kuin kiekkojen avulla, vaikka sekin on jo suuri. Kokeile muuttaa ohjelmassa kynän paikkaa ja rattaiden suhteita. Internetistä löytyy myös Geogebralla toteutettuja piirtelyohjelmia. Voit kokeilla myös niitä. Hauskoja piirtelyhetkiä!

Lähteet ja lisää lukemista

[1] Wikipedia: Spirograph https://en.wikipedia.org/wiki/Spirograph

Wikipedia: Hypotrochoid https://en.wikipedia.org/wiki/Hypotrochoid


Tilaa Dimension uutiskirje – saat sähköpostiisi aina kuunvaihteessa koosteen tuoreimmista artikkeleista

Kirjoittaja