Suorakulmainen särmiö

Suorakulmainen särmiö



Tämä simulaatio piirtää suorakulmaisen särmiön. Ohjelma laskee suorakulmaisen särmiön pinta-alan ja tilavuuden. Ohjelman koodi on alla. Kopioi tämä koodi kokonaisuudessaan ohjelmointiympäristöön ja suorita koodi. Sinun ei tarvitse tehdä koodiin mitään muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 19.2.2018
float a = 275; // Laskurin alkuarvo (ikkunan keskellä)
float b = 275; // Laskurin alkuarvo (ikkunan keskellä)
float c = 275; // Laskurin alkuarvo (ikkunan keskellä)

void setup () {
     size(991,750); // 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 < 940)) { // 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 < 940)) { // 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>c) && (c < 940)) { // Jos hiiri on oikealla puolen
         c++; // niin kasvata laskuria
      }

      if ((x1<c) && (x1 >= 0)) { // Jos hiiri on vasemmalla puolen
         c--; // niin pienennä laskuria
      }
     }

      
     }
     fill(0); // Musta tekstin väri
     int a2 = round(map(a,0,940,1,12));
     int b2 = round(map(b,0,940,1,12));
     int c2 = round(map(c,0,940,1,12));

     fill(255);
     noStroke();
     rect(0,150,600,600);
     stroke(200);
     strokeWeight(1);
     for (int z = 0; z < 20; z++) {
           line(z*30,150,z*30,750); 
           line(0,150+z*30,570,150+z*30); 
      }
      for (int z = 0; z < 100; z++) {
           line(570+z*10,150,570+z*10,750); 
           line(570,150+z*10,1000,150+z*10); 
      }

      pushMatrix();
      translate(30,720);
      scale(1,-1);
      stroke(0);
      
      fill(0,200,250,100);
      rect(930-c2*10,540,-a2*10,-b2*10);
      rect(930-c2*10,540-b2*10,-a2*10,-c2*10);
      rect(930-c2*10,540-b2*10-c2*10,-a2*10,-b2*10);
      rect(930-c2*10,540-b2*10-c2*10,c2*10,-b2*10);
      rect(930-c2*10-a2*10,540-b2*10-c2*10,-c2*10,-b2*10);
      rect(930-c2*10,540-b2*10-c2*10-b2*10,-a2*10,-c2*10);
      fill(250,200,0,100);
      strokeWeight(2);
      sarmio(0,0,a2,b2,c2);
      popMatrix();
      fill(0);
      text(a2,30+a2*15,740);
      float d2 = b2*cos(radians(45));
      float e2 = b2*sin(radians(45));
      text(b2,30+a2*30+b2*5,740-b2*5);
      text(c2,30+a2*28+d2*20,740-e2*20-c2*15);
      noStroke();
      fill(255);
      rect(0,0,600,148);
      stroke(0); // Musta viivan väri
      strokeWeight(3);
      fill(255,255,0); // Keltainen täyttöväri
      rect(0,0,990,30); // Piirrä keltainen suorakulmio
      rect(0,30,990,30); // Piirrä keltainen suorakulmio
      rect(0,60,990,30); // Piirrä keltainen suorakulmio

           
      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(c,60,50,30); // Piirrä punainen neliö

      textSize(20);
      fill(0);
      textSize(20);
      text(""+a2,a+4,25);   
      text(""+b2,b+4,55);
      text(""+c2,c+4,85);   
      if ((a2 == b2) && (b2 == c2)) {
        text("A = 6a\u00B2 = 6\u00B7"+a2+"\u00B2 = "+(6*a2*b2),10,115);
        text("V = a\u00B3 = "+a2+"\u00B3 = "+(a2*b2*c2),10,145);
        text("Kuutio",700,115);
      } else {
       text("A = 2ab + 2ac + 2bc = 2\u00B7"+a2+"\u00B7"+b2+" + 2\u00B7"+a2+"\u00B7"+c2+" + 2\u00B7"+b2+"\u00B7"+c2+" = "+(2*a2*b2+2*a2*c2+2*b2*c2),10,115);
       text("V = abc= "+a2+"\u00B7"+b2+"\u00B7"+c2+" = "+a2*b2*c2,10,145);
       text("Suorakulmainen särmiö",700,115);
      }
}
void sarmio(float x, float y, float a, float b, float c) {
      float x1 = map(x,-10,10,-300,300);
      float y1 = map(y,-10,10,-300,300);
      float a1 = map(a,-10,10,-300,300);
      float b1 = map(b,-10,10,-300,300)/2.0;
      float c1 = map(c,-10,10,-300,300);
      float dx = b1*cos(radians(45));
      float dy = b1*sin(radians(45));
      quad(x1,y1,x1+dx,y1+dy,x1+dx,y1+c1+dy,x1,y1+c1);
      quad(x1,y1,x1+dx,y1+dy,x1+a1+dx,y1+dy,x1+a1,y1);
      quad(x1+dx,y1+dy,x1+a1+dx,y1+dy,x1+a1+dx,y1+c1+dy,x1+dx,y1+c1+dy);
      rect(x1,y1,a1,c1);
      quad(x1+a1,y1,x1+a1+dx,y1+dy,x1+a1+dx,y1+c1+dy,x1+a1,y1+c1);
      quad(x1+a1+dx,y1+c1+dy,x1+a1,y1+c1,x1,y1+c1,x1+dx,y1+c1+dy);
}