Lukusuora

Lukusuora



Tämä simulaatio havainnollistaa pisteen piirtämistä lukusuoralle. Ohjelmalla voidaan havainnollistaa lukujen vertailua, yhteen- ja vähennyslaskuja, vastalukuja ja itseisarvoa. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 18.2.2018
float a = 165; // Laskurin alkuarvo (ikkunan keskellä)
float b = 220; // Laskurin alkuarvo (ikkunan keskellä)
float e = 810;
void setup () {
     size(1000,550); // ikkunan koko   

}

void draw() {
     background(255); // Tyhjennä tausta
     stroke(0); // Musta viivan väri
     strokeWeight(3);
     textSize(20);
  

     int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
     int y1 = mouseY;
     if (mousePressed == true) {
     if ((y1 > 0) && (y1 < 30)) {
     if ((x1>a) && (a < 950)) { // Jos hiiri on oikealla puolen
         a++; // niin kasvata laskuria
     }

     if ((x1<a) && (x1 > 0)) { // Jos hiiri on vasemmalla puolen
         a--; // niin pienennä laskuria
     }
     }
     if ((y1 > 30) && (y1 < 60)) {
     if ((x1>b) && (b < 950)) { // Jos hiiri on oikealla puolen
         b++; // niin kasvata laskuria
     }

     if ((x1<b) && (x1 > 0)) { // Jos hiiri on vasemmalla puolen
         b--; // niin pienennä laskuria
     }
     }
    
      if ((y1 > 60) && (y1 < 90)) {
      if ((x1>e) && (e < 900)) { // Jos hiiri on oikealla puolen
         e++; // niin kasvata laskuria
      }

      if ((x1<e) && (x1 >0)) { // Jos hiiri on vasemmalla puolen
         e--; // niin pienennä laskuria
      }
     }
     }
     int a2 = 0;
     int b2 = 0;
     int e2 = round(map(e,0,900,0,5));
     if ((e2 == 0) || (e2 == 1) || (e2 == 4) || (e2 == 5)){
       a2 = round(map(a,0,950,-24,24));
       b2 = round(map(b,0,950,-24,24));
     } else {
        a2 = round(map(a,0,950,-12,12));
        b2 = round(map(b,0,950,-12,12));
     }
        fill(255);
        noStroke();
        rect(0,150,1000,600);
        stroke(0);
        strokeWeight(2);
        textSize(10);
        fill(0);
        for (int z = 1; z < 50; z++) {
           line(z*20,440,z*20,460);
           if (z >= 25) {
             text(z-25,z*20-2,475);
           } else {
             text(z-25,z*20-8,475);
           }
        }
        strokeWeight(3);
      
        line(10,450,1000,450);
        triangle(990,440,998,450,990,460);
        textSize(30);
        text("x",980,430);
        pushMatrix();
        translate(500,450);
        scale(1,-1);
     
       noStroke();
       fill(255,0,0);
       ellipse(a2*20,0,18,18);
          if (e2 == 0) {
          fill(0,0,255);
          ellipse((b2)*20,0,16,16);
       }
       
        if (e2 == 1) {
          fill(0,0,255);
          ellipse((b2)*20,0,16,16);
          scale(1,-1);
          fill(0);
          if (b2 > a2) {
            text(a2+" < "+b2,-480,-300);
           
          } else if (b2 < a2){
             text(a2+" > "+b2,-480,-300);
           
          } else {
            text(a2+" = "+b2,-480,-300);
          }
          if (b2 >= 0) {
                text(a2+" - (+"+b2+") = "+a2+""+(-b2)+" = "+(a2-b2),-480,-250);
            } else {
               text(a2+" - ("+b2+") = "+a2+"+"+(-b2)+" = "+(a2-b2),-480,-250);
            }
           text("Lukujen etäisyys toisistaan: |"+(a2-b2)+"|="+abs(a2-b2),-480,-200);
              text(""+abs(a2-b2),(-10+20*(a2+b2)/2.0),-50);
          scale(1,-1);
           stroke(0,0,255);
          strokeWeight(2);
          line(a2*20,40,a2*20,20);
          line(b2*20,40,b2*20,20);
          line(a2*20,40,b2*20,40);
          
        }
        if (e2 == 2) {
          fill(0,0,255);
          ellipse((a2+b2)*20,0,16,16);
          triangle((a2+b2)*20,10,10+(a2+b2)*20,20,-10+(a2+b2)*20,20);
          stroke(0,0,255);
          strokeWeight(2);
          line(a2*20,40,a2*20,20);
          line((a2+b2)*20,40,(a2+b2)*20,20);
          line(a2*20,40,(a2+b2)*20,40);
          fill(0);
          scale(1,-1);
          if (b2 >= 0) {
            text("+"+b2,(-20+20*(a2+a2+b2)/2.0),-50);
             text("Mennään lukusuoralla oikealle",-480,-250);
            text(a2+"+(+"+b2+") = "+a2+"+"+b2+" = "+(a2+b2),-480,-200);
          } else {
            text(b2,(-20+20*(a2+a2+b2)/2.0),-50);
                text("Mennään lukusuoralla vasemalle",-480,-250);
            text(a2+"+("+b2+") = "+a2+""+b2+" = "+(a2+b2),-480,-200);
          }
          scale(1,-1);
        }
        if (e2 == 3) {
             fill(0,0,255);
          ellipse((a2-b2)*20,0,16,16);
          triangle((a2-b2)*20,10,10+(a2-b2)*20,20,-10+(a2-b2)*20,20);
          stroke(0,0,255);
          strokeWeight(2);
          line(a2*20,40,a2*20,20);
          line((a2-b2)*20,40,(a2-b2)*20,20);
          line(a2*20,40,(a2-b2)*20,40);
          fill(0);
          scale(1,-1);
          if (b2 >= 0) {
            text(""+(-b2),(-20+20*(a2+a2-b2)/2.0),-50);
            text("+"+b2+":n vastaluku on "+(-b2),-480,-250);
            text(a2+"-(+"+b2+") = "+a2+"-"+b2+" = "+(a2-b2),-480,-200);
          } else {
            text("+"+(-b2),(-20+20*(a2+a2-b2)/2.0),-50);
             text(b2+":n vastaluku on +"+(-b2),-480,-250);
            text(a2+"-("+b2+") = "+a2+"+"+(-b2)+" = "+(a2-b2),-480,-200);
          }
          scale(1,-1);
       
        }
        if (e2 == 4) {
          fill(0,0,255);
          ellipse((b2)*20,0,16,16);
          // triangle((b2)*20,10,10+(b2)*20,20,-10+(b2)*20,20);
          stroke(255,0,0);
          strokeWeight(2);
          line(0,40,0,20);
          line((a2)*20,40,(a2)*20,20);
          line(0,40,(a2)*20,40); 
          stroke(0,0,255);
          line(0,-50,0,-30);
          line((b2)*20,-50,(b2)*20,-30);
          line(0,-50,(b2)*20,-50);
          fill(0);
          scale(1,-1);
          if (b2 >= 0) {
            text(abs(b2),(20*(b2/2.0)),80);
            text("+"+b2+":n itseisarvo on "+(abs(b2)),-480,-200);
            text("|+"+b2+"| = "+(abs(b2)),-480,-150);
          } else {
            text(abs(b2),(20*(b2/2.0)),80);
            text(""+b2+":n itseisarvo on "+(abs(b2)),-480,-200);
            text("|"+b2+"| = "+(abs(b2)),-480,-150);
          }
          if (a2 >= 0) {
            text(abs(a2),(20*(a2/2.0)),-50);
            text("+"+a2+":n itseisarvo on "+(abs(a2)),-480,-300);
            text("|+"+a2+"| = "+(abs(a2)),-480,-250);
          } else {
            text(abs(a2),(20*(a2/2.0)),-50);
            text(""+a2+":n itseisarvo on "+(abs(a2)),-480,-300);
            text("|"+a2+"| = "+(abs(a2)),-480,-250);
          }
          scale(1,-1);
        }
          if (e2 == 5) {
          fill(0,0,255);
          ellipse((b2)*20,0,16,16);
          triangle((-b2)*20,-20,10+(-b2)*20,-30,-10+(-b2)*20,-30);
          fill(255,0,0);
           triangle((-a2)*20,10,10+(-a2)*20,20,-10+(-a2)*20,20);
          stroke(255,0,0);
          strokeWeight(2);
          line(0,40,0,20);
          line((a2)*20,40,(a2)*20,20);
          line(0,40,(a2)*20,40); 
          line((-a2)*20,40,(-a2)*20,20);
          line(0,40,(-a2)*20,40); 
          stroke(0,0,255);
          line(0,-50,0,-30);
          line((b2)*20,-50,(b2)*20,-30);
          line(0,-50,(b2)*20,-50);
          line((-b2)*20,-50,(-b2)*20,-30);
          line(0,-50,(-b2)*20,-50);
          fill(0);
          scale(1,-1);
          if (b2 >= 0) {
            text("+"+b2,-40+20*b2,80);
            text(-b2,-20+20*(-b2),80);
            text("+"+b2+":n vastaluku on "+(-b2),-480,-200);
            text("-(+"+b2+") = "+(-b2),-480,-150);
          } else {
            text(b2,-20+20*b2,80);
            text("+"+(-b2),-40-20*b2,80);
            text(""+b2+":n vastaluku on +"+(-b2),-480,-200);
            text("-("+b2+") = +"+(-b2),-480,-150);
          }
          if (a2 >= 0) {
            text("+"+a2,-40+20*a2,-50);
            text(-a2,-20-20*a2,-50);
            text("+"+a2+":n vastaluku on "+(-a2),-480,-300);
            text("-(+"+a2+") = "+(-a2),-480,-250);
          } else {
            text(a2,-20+20*a2,-50);
            text("+"+(-a2),-40-20*a2,-50);
            text(""+a2+":n vastaluku on +"+(-a2),-480,-300);
            text("-("+a2+") = +"+(-a2),-480,-250);
          }
          scale(1,-1);
       
        }
   
       popMatrix(); 
         stroke(0); // Musta viivan väri
        strokeWeight(3);
           fill(255,255,0); // Keltainen täyttöväri
           rect(0,0,999,30); // Piirrä keltainen suorakulmio
           rect(0,30,999,30); // Piirrä keltainen suorakulmio
           rect(0,60,999,30);
         fill(255,100,100); // Punainen täyttöväri
         rect(a,0,50,30); // Piirrä punainen neliö
         rect(b,30,50,30); // Piirrä punainen neliö
         rect(e,60,100,30);
  
         textSize(20);
          fill(0);
          textSize(20);
          text(""+a2,a+4,25);   
          text(""+b2,b+4,55);

          textSize(15);
          if (e2 == 0) {
            text("Pisteet",e+4,85);
          }
          if (e2 == 1) {
            text("Vertailu",e+4,85);
          }
          if (e2 == 2) {
            text("yht. lasku",e+4,85);
          }
          if (e2 == 3) {
            text("väh. lasku",e+4,85);
          }
          if (e2 == 4) {
            text("Itseisarvo",e+4,85);
          }
           if (e2 == 5) {
            text("Vastaluku",e+4,85);
          }
}