Monikulmio

Monikulmio



Tämä simulaatio havainnollistaa suorakulmion, suunnikkaan, puolisuunnikkaan, kolmion ja monikulmion piirtämistä xy-koordinaatistoon. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 18.2.2018
float a = 100; // Laskurin alkuarvo (ikkunan keskellä)
float b = 100; // Laskurin alkuarvo (ikkunan keskellä)
float c = 100; // Laskurin alkuarvo (ikkunan keskellä)
float d = 100; // Laskurin alkuarvo (ikkunan keskellä)
float e = 0;
float f = 400;
float g = 400;
void setup () {
     size(600,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;
     int e2 = round(map(e,0,450,0,5));
     if (mousePressed == true) {
     if ((y1 > 0) && (y1 < 30)) {
      if (e2 == 0) {
        if ((x1>a) && (a < 550)) { // Jos hiiri on oikealla puolen
         a++; // niin kasvata laskuria
        }
      }
      if ((e2 == 1) || (e2 == 2) || (e2 == 3) || (e2 == 4) || (e2 == 5)){
        if ((x1>a) && (a < 250) && (x1 < 300)) { // 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 ((e2 == 0) || (e2 == 1) || (e2 == 3) || (e2 == 4) || (e2 == 5)) {
      if ((x1>b) && (b < 550)) { // Jos hiiri on oikealla puolen
         b++; // niin kasvata laskuria
      }
      if ((x1<b) && (x1 > 0)) { // Jos hiiri on vasemmalla puolen
         b--; // niin pienennä laskuria
      }
      }
       if (e2 == 2) {
      if ((x1>b) && (b < 250) && (x1 < 300)) { // 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 < 550)) { // Jos hiiri on oikealla puolen
         c++; // niin kasvata laskuria
      }

      if ((x1<c) && (x1 > 0)) { // Jos hiiri on vasemmalla puolen
         c--; // niin pienennä laskuria
      }
     }
     if ((y1 > 90) && (y1 < 120)) {
      if ((x1>d) && (d < 550)) { // Jos hiiri on oikealla puolen
         d++; // niin kasvata laskuria
      }

      if ((x1<d) && (x1 >0)) { // Jos hiiri on vasemmalla puolen
         d--; // niin pienennä laskuria
      }
     }
     if ((y1 > 120) && (y1 < 150)) {
      if ((x1>e) && (e < 450)) { // Jos hiiri on oikealla puolen
         e++; // niin kasvata laskuria
      }

      if ((x1<e) && (x1 >0)) { // Jos hiiri on vasemmalla puolen
         e--; // niin pienennä laskuria
      }
     }
     if ((y1 > 120) && (y1 < 150)) {
      if ((x1>e) && (e < 450)) { // Jos hiiri on oikealla puolen
         e++; // niin kasvata laskuria
      }

      if ((x1<e) && (x1 >0)) { // Jos hiiri on vasemmalla puolen
         e--; // niin pienennä laskuria
      }
     }
     if ((y1 > 0) && (y1 < 30)) {
      if ((x1>f) && (f < 550)) { // Jos hiiri on oikealla puolen
         f++; // niin kasvata laskuria
      }

      if ((x1<f) && (x1 > 300)) { // Jos hiiri on vasemmalla puolen
         f--; // niin pienennä laskuria
      }
     }
     if ((y1 > 30) && (y1 < 60)) {
      if ((x1>g) && (g < 550)) { // Jos hiiri on oikealla puolen
         g++; // niin kasvata laskuria
      }

      if ((x1<g) && (x1 > 300)) { // Jos hiiri on vasemmalla puolen
         g--; // niin pienennä laskuria
      }
     }
     }
     fill(0); // Musta tekstin väri
     int a2 = 1;
     int b2 = 1;
     int c2 = 1;
     int d2 = 1;
     int f2 = 1;
     int g2 = 1;
     if (e2 == 0) {
        a2 = round(map(a,0,550,-10,10));
        b2 = round(map(b,0,550,-10,10));
        c2 = round(map(c,0,550,1,20));
        d2 = round(map(d,0,550,1,20));
     } 
      if (e2 == 1) {
        a2 = round(map(a,0,250,-10,10));
        f2 = round(map(f,300,550,-10,10));
        b2 = round(map(b,0,550,1,20));
        c2 = round(map(c,0,550,1,20));
        d2 = round(map(d,0,550,0,180));
     } 
      if (e2 == 2) {
        a2 = round(map(a,0,250,-10,10));
        f2 = round(map(f,300,550,-10,10));
        b2 = round(map(b,0,250,1,20));
        g2 = round(map(g,300,550,1,20));
        c2 = round(map(c,0,550,1,20));
        d2 = round(map(d,0,550,-10,10));
     } 
     if (e2 == 3) {
        a2 = round(map(a,0,250,-10,10));
        f2 = round(map(f,300,550,-10,10));
        b2 = round(map(b,0,550,1,20));
        c2 = round(map(c,0,550,1,20));
        d2 = round(map(d,0,550,0,180));
     } 
     if (e2 == 4) {
        a2 = round(map(a,0,250,-10,10));
        f2 = round(map(f,300,550,-10,10));
        b2 = round(map(b,0,550,1,20));
        c2 = round(map(c,0,550,0,180));
        d2 = round(map(d,0,550,0,180));
     } 
     if (e2 == 5) {
       a2 = round(map(a,0,250,-10,10));
       f2 = round(map(f,300,550,-10,10));
       b2 = round(map(b,0,550,1,10));
       c2 = round(map(c,0,550,3,20));
       d2 = round(map(d,0,550,0,360));
     }    
        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);

        pushMatrix();
        translate(300,450);
        scale(1,-1);
        fill(0,0,255,100);
        if (e2 == 0) {
         suorakulmio(a2,b2,c2,d2);
        }
        if (e2 == 1) {
         suunnikas(a2,f2,b2,c2,d2);
        }
        if (e2 == 2) {
            puolisuunnikas(a2,f2,b2,g2,c2,d2);
        }
        if (e2 == 3) {
           kolmio(a2,f2,b2,c2,d2);
        }
         if (e2 == 4) {
           kolmiokanta(a2,f2,b2,c2,d2);
        }
        if (e2 == 5) {
           monikulmio(a2,f2,b2,c2,d2);
        }
       
       popMatrix();
        fill(0);   
        fill(255);
        rect(0,0,600,148);
        stroke(0); // Musta viivan väri
        strokeWeight(3);
        fill(255,255,0); // Keltainen täyttöväri
        if (e2 == 0) {
          rect(0,0,599,30); // Piirrä keltainen suorakulmio
           rect(0,30,599,30); // Piirrä keltainen suorakulmio
        }
        if ((e2 == 1) || (e2 == 3) || (e2 == 4) || (e2 == 5)) {
          rect(0,0,299,30); // Piirrä keltainen suorakulmio
          rect(300,0,299,30); // Piirrä keltainen suorakulmio
           rect(0,30,599,30); // Piirrä keltainen suorakulmio
        }
         if (e2 == 2) {
          rect(0,0,299,30); // Piirrä keltainen suorakulmio
          rect(300,0,299,30); // Piirrä keltainen suorakulmio
          rect(0,30,299,30); // Piirrä keltainen suorakulmio
          rect(300,30,299,30); // Piirrä keltainen suorakulmio
        }
       
        rect(0,60,599,30); // Piirrä keltainen suorakulmio
        rect(0,90,599,30); // Piirrä keltainen suorakulmio
        rect(0,120,599,30);
        fill(255,100,100); // Punainen täyttöväri
     
         rect(a,0,50,30); // Piirrä punainen neliö
         if ((e2 == 1) || (e2 == 3) || (e2 == 4) || (e2 == 5)) {
              rect(f,0,50,30); // Piirrä punainen neliö
         }
         if (e2 == 2) {
              rect(f,0,50,30); // Piirrä punainen neliö
              rect(g,30,50,30); // Piirrä punainen neliö
         }
         
        rect(a,0,50,30); // Piirrä punainen neliö
        rect(b,30,50,30); // Piirrä punainen neliö
        rect(c,60,50,30); // Piirrä punainen neliö
        rect(d,90,50,30); // Piirrä punainen neliö
        rect(e,120,150,30);
  
         textSize(20);
         fill(0);
         textSize(20);
         text(""+a2,a+4,25);   
         text(""+b2,b+4,55);
         text(""+c2,c+4,85);   
         text(""+d2,d+4,115);
         if ((e2 == 1) || (e2 == 3) || (e2 == 4) || (e2 == 5)) {
            text(""+f2,f+4,25);   
         }
         if (e2 == 2) {
            text(""+f2,f+4,25);   
            text(""+g2,g+4,55);   
         }
         textSize(15);
         if (e2 == 0) {
            text("Suorakulmio",e+4,145);
         }
         if (e2 == 1) {
           text("Suunnikas",e+4,145);      
         }
          if (e2 == 2) {
            text("Puolisuunnikas",e+4,145);
          }
          if (e2 == 3) {
            text("Kolmio",e+4,145);
          }     
           if (e2 == 4) {
            text("Kolmio 2",e+4,145);
          }   
          if (e2 == 5) {
            text("Monikulmio",e+4,145);
          } 
}
void monikulmio(float x, float y, float sade, float lukumaara, float alkukulma) {
     if (lukumaara > 0) {
     float x22 = map(x,-10,10,-300,300);
     float y22 = map(y,-10,10,-300,300);
     if (lukumaara == 1) {
          ellipse(x22,y22,5,5);
     } else {
          float lisays = 360.0/lukumaara;
          float kulma = alkukulma+lisays;
          beginShape();
             for (int s = 0; s<=lukumaara; s++) {
                 float x11 = sade*30*cos(radians(kulma));
                 float y11 = sade*30*sin(radians(kulma));
                 vertex(x22+x11,y22+y11);
                 kulma = kulma+lisays;
             }
          endShape();
          }
     }
}
void suunnikas(float x, float y, float sivu1, float sivu2, float kulma) {
     float x2 = map(x,-10,10,-300,300);
     float y2 = map(y,-10,10,-300,300);
     float sivu12 = map(sivu1,-10,10,-300,300);
     float sivu22 = map(sivu2,-10,10,-300,300);
     quad(x2,y2, x2+sivu12,y2, x2+sivu12+sivu22*cos(radians(kulma)),y2+sivu22*sin(radians(kulma)), x2+sivu22*cos(radians(kulma)),y2+sivu22*sin(radians(kulma)) );
}
void puolisuunnikas(float x, float y, float a, float b, float h, float dx) {
     float x2 = map(x,-10,10,-300,300);
     float y2 = map(y,-10,10,-300,300);
     float a2 = map(a,-10,10,-300,300);
     float b2 = map(b,-10,10,-300,300);
     float h2 = map(h,-10,10,-300,300);
     float dx2 = map(dx,-10,10,-300,300);
     quad(x2,y2,x2+b2,y2,x2+a2+dx2,y2+h2,x2+dx2,y2+h2);
}
void kolmio(float x, float y, float sivu1, float sivu2, float kulma) {
     float x2 = map(x,-10,10,-300,300);
     float y2 = map(y,-10,10,-300,300);
     float sivu12 = map(sivu1,-10,10,-300,300);
     float sivu22 = map(sivu2,-10,10,-300,300);
     triangle(x2,y2, x2+sivu12,y2, x2+sivu22*cos(radians(kulma)),y2+sivu22*sin(radians(kulma)) );
}
void kolmiokanta(float x1, float y1, float sivu, float kulma1, float kulma2) {
     float x2 = map(x1,-10,10,-300,300);
     float y2 = map(y1,-10,10,-300,300);
     float sivu2 = map(sivu,-10,10,-300,300);
     float a = (sin(radians(kulma2))*sivu)/sin(radians(180-(kulma1+kulma2)));
     float x0 = x2+30*a*cos(radians(kulma1));
     float y0 = y2+30*a*sin(radians(kulma1));
     triangle(x2,y2,x2+sivu2,y2,x0,y0);
     
}
void suorakulmio(float x, float y, float leveys, float korkeus) {
     float x2 = map(x,-10,10,-300,300);
     float y2 = map(y,-10,10,-300,300);
     float leveys2 = map(leveys,-10,10,-300,300);
     float korkeus2 = map(korkeus,-10,10,-300,300);
     rect(x2,y2,leveys2,korkeus2);
}

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä