Peilaus

Peilaus



Tämä simulaatio havainnollistaa peilausta x-akselin, y-akselin ja origon suhteen. Ohjelmalla voidaan piirtää xy-koordinaatistoon niin, että kuvio peilautuu halutulla tavalla. Tyhjennä-painikkeesta voidaan piirustusjälki tyhjentää. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 19.2.2018
float a = 100; // Laskurin alkuarvo (ikkunan keskellä)
boolean tyhjenna = false; 
void setup () {
        size(600,750); // ikkunan koko   
        background(255); // Tyhjennä tausta     
        fill(255);
        noStroke();
        // rect(0,150,600,600);
        stroke(200);
        strokeWeight(2);
        for (int z = 0; z < 21; z++) {
           line(z*30,150,z*30,750); 
           line(0,150+z*30,600,150+z*30); 
        }
        strokeWeight(3);
        stroke(0);
        line(300,150,300,750);
        line(0,450,600,450);
        fill(0);
        triangle(590,440,598,450,590,460);
        triangle(300,150,310,160,290,160);
        text("x",580,430);
        text("y",315,170);
        textSize(20);
}

void draw() {
     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 < 400)) { // 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 > 90) && (y1 < 130)) {
      if ((x1>400) && (x1 < 550)) { // Jos hiiri on oikealla puolen
         tyhjenna = true;
      }
     } 
     }
     fill(0); // Musta tekstin väri
     int a2 = round(map(a,0,400,0,4));  
      if ( tyhjenna == true) {
        background(255);
        fill(255);
        noStroke();
        // rect(0,150,600,600);
        stroke(200);
        strokeWeight(2);
        for (int z = 0; z < 21; z++) {
           line(z*30,150,z*30,750); 
           line(0,150+z*30,600,150+z*30); 
        }
        strokeWeight(3);
        stroke(0);
        line(300,150,300,750);
        line(0,450,600,450);
        fill(0);
        triangle(590,440,598,450,590,460);
        triangle(300,150,310,160,290,160);
        text("x",580,430);
        text("y",315,170);
        textSize(20);
       
        tyhjenna = false;
      }
        pushMatrix();
        translate(300,450);
        strokeWeight(5);
        if (mousePressed == true) {
            if ((y1 > 150) && (y1 < 750)) {
              if ((x1>0) && (x1 < 600)) { // Jos hiiri on oikealla puolen
                   stroke(0,0,255);
                   line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                   if (a2 == 1) {
                      scale(1,-1);
                      stroke(255,0,0);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                   }
                    if (a2 == 2) {
                      scale(-1,1);
                      stroke(255,0,0);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                   }
                    if (a2 == 3) {
                      scale(-1,-1);
                      stroke(255,0,0);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                   }
                   if (a2 == 4) {
                      scale(1,-1);
                      stroke(255,0,0);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                      scale(-1,1);
                      stroke(255,0,255);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                      scale(1,-1);
                      stroke(0,255,255);
                      line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
                   }
              }
            }
        }         
        popMatrix();
        fill(0);
        noStroke();
        fill(255);
        rect(0,0,600,149);
        stroke(0); // Musta viivan väri
        strokeWeight(3);
        fill(255,255,0); // Keltainen täyttöväri
        rect(0,0,849,30); // Piirrä keltainen suorakulmio         
        fill(255,100,100); // Punainen täyttöväri
        rect(a,0,200,30); // Piirrä punainen neliö
        rect(400,90,150,40,30); 
        textSize(20);
        fill(0);
        textSize(20);
        if (a2 == 0) {
            text("Ei peilausta",a+4,25); 
            text("Ei peilausta",10,70);
         }
         if (a2 == 1) {
            text("x-akseli",a+4,25); 
            text("Peilaus x-akselin suhteen",10,70);
         }
         if (a2 == 2) {
            text("y-akseli",a+4,25); 
            text("Peilaus y-akselin suhteen",10,70);
          }
          if (a2 == 3) {
            text("Origo",a+4,25);
            text("Peilaus origon suhteen",10,70);
          }
          if (a2 == 4) {
            text("Kaikki",a+4,25);
            text("Peilaus x-akselin, y-akselin ja origon suhteen",10,70);
          }
          text("Tyhjennä",420,120);          
}