Laskurin arvon skaalaaminen sopivaksi

Koska ikkunan leveys on 400, niin laskuri vaihtelee välillä [0, 350]. Haluamme skaalata nämä arvot välille [-10, 10]. Kuinka se onnistuu? Nyt voimme käyttää map()-funktiota lukuarvon a skaalaamiseen välille [-10, 10].

int x2 = round(map(a,0,350,-10,10));



Komento muuttaa muuttujan a arvon, joka vaihtelee välillä [0,350] asteikolle [-10,10]. map()-funktion arvo sijoitetaan muuttujalle x2. Kokonainen ohjelma on seuraavanlainen.

// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 200; // Laskurin alkuarvo (ikkunan keskellä)
void setup () {
     size(400,400); // ikkunan koko
     stroke(0); // Musta viivan väri
     textSize(20); // Tekstin koko 20
}
void draw() {
     background(255); // Tyhjennä tausta
     fill(255,255,0); // Keltainen täyttöväri
     rect(0,0,400,50); // Piirrä keltainen suorakulmio
     fill(255,0,0); // Punainen täyttöväri
     rect(a,0,50,50); // Piirrä punainen neliä
     int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
     int y1 = mouseY; // selvitä hiiren pystykoordinaatti
if (mousePressed == true) { if ((y1 > 0) && (y1 < 50)) { if ((x1 > a) && (a < 350)) { // Jos hiiri on oikealla puolen a++; // niin kasvata laskuria } if ((x1 < a) && (a >0)){ // Jos hiiri on vasemmalla puolen a--; // niin pienennä laskuria } }
} fill(0); // Musta tekstin väri
text("Laskuri ="+a,20,150); // Tulosta laskuri
int x2 = round(map(a,0,350,-10,10));
text("Skaalattu arvo x = "+x2,20,200);
if (x2 < 0) {
text("Laskettu arvo: f("+x2+") = 3\u00B7("+x2+") = "+3*x2,20,250);
} else {
text("Laskettu arvo: f("+x2+") = 3\u00B7"+x2+" = "+3*x2,20,250);
} }


Ohjelman suoritus näyttää tältä.