Samankohtaiset kulmat

Samankohtaiset kulmat



Tämä simulaatio havainnollistaa samankohtaisia kulmia. Kaikkia suoria voidaan pyörittää ympäri suhteessa y-akselilla olevaan pisteeseen. Yhtä suoraa voidaan lisäksi liikuttaa pystysuunnassa ylös ja alas alimmaisella liukupalkilla. 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ä)
float b = 200; // Laskurin alkuarvo (ikkunan keskellä)
float c = 137; // Laskurin alkuarvo (ikkunan keskellä)
float d = 375; // Laskurin alkuarvo (ikkunan keskellä)
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;
     if (mousePressed == true) {
     if ((y1 > 0) && (y1 < 30)) {
     if ((x1>a) && (a < 550)) { // 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 < 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 ((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
      }
     }
      
     }
     fill(0); // Musta tekstin väri
     int a2 = round(map(a,0,550,0,180));
     int b2 = round(map(b,0,550,0,180));
     int c2 = round(map(c,0,550,0,180));
     int d2 = round(map(d,0,550,-10,10));
     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);
     text("1",323,470);
     text("1",280,430);
     pushMatrix();
     translate(300,450);
     scale(1,-1);
     fill(255,0,0,200);
     float k1 = tan(radians(b2));
     float k2 = tan(radians(c2));
     float v1 = 0;
     float v2 = d2*30;
     for (int m=-300; m <= 300; m++) {
         float yht1 = k1*m+v1;
         float yht2 = k2*m+v2;
         fill(255,0,0);
         strokeWeight(1);
         if (abs(yht1-yht2) < 2) { 
             if ((c2 >=b2) && (a2 >=b2)) {
               arc(m,yht1,60,60,radians(b2),radians(c2),PIE);
               arc(0,0,60,60,radians(b2),radians(a2),PIE);
             } 
             if ((b2 > c2) && (b2 > a2)) {
               arc(m,yht1,60,60,radians(c2),radians(b2),PIE);
               arc(0,0,60,60,radians(a2),radians(b2),PIE);
             }
              if ((c2 >= b2) && (b2 > a2)) {
               arc(m,yht1,60,60,radians(b2),radians(c2),PIE);
               arc(0,0,60,60,radians(a2),radians(b2),PIE);
             }
              if ((b2 > c2) && (a2 >= b2)) {
               arc(m,yht1,60,60,radians(c2),radians(b2),PIE);
               arc(0,0,60,60,radians(b2),radians(a2),PIE);
             }
         } 
     }     
     noFill();
     stroke(255,0,0);
     float xb = 30*a2*cos(radians(b2));
     float yb = 30*a2*sin(radians(b2));
     float xc = 30*a2*cos(radians(c2));
     float yc = 30*a2*sin(radians(c2));
     line(xb,yb,xb+10*yb,yb-10*xb);
     line(xb,yb,xb-10*yb,yb+10*xb);
     line(xc,yc,xc+10*yc,yc-10*xc);
     line(xc,yc,xc-10*yc,yc+10*xc);  
     stroke(0);
     strokeWeight(5); 
     stroke(0,0,255);
     if (b2 >= a2) {
          arc(0,0,1000,1000,radians(a2),radians(b2),PIE);
          arc(0,0,1000,1000,radians(a2+180),radians(b2+180),PIE);
          if (b2 == a2) {
            float sx = 1000*cos(radians(a2));
            float sy = 1000*sin(radians(a2));
           line(0,0,sx,sy);
           line(0,0,-sx,-sy);
          }
     } else {
          arc(0,0,1000,1000,radians(b2), radians(a2),PIE); 
          arc(0,0,1000,1000,radians(b2+180),radians(a2+180),PIE);
     }
       
          arc(0,d2*30,2000,2000,radians(c2),radians(c2+180),PIE);  
     popMatrix();
     fill(0);
     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,849,30); // Piirrä keltainen suorakulmio
     rect(0,30,849,30); // Piirrä keltainen suorakulmio
     rect(0,60,849,30); // Piirrä keltainen suorakulmio
     rect(0,90,849,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ö
     rect(d,90,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);   
     text(""+d2,d+4,115);
     if ((c2 >=b2) && (a2 >=b2)) {
           text("Kulma = "+abs(b2-a2)+"\u00B0",10,145);
           text("Samankohtainen kulma = "+(abs(b2-c2))+"\u00B0",250,145);
     } 
     if ((b2 > c2) && (b2 > a2)) {
           text("Kulma = "+abs(b2-a2)+"\u00B0",10,145);
           text("Samankohtainen kulma = "+(abs(b2-c2))+"\u00B0",250,145);
     }
     if ((c2 >= b2) && (b2 >= a2)) {
           text("Kulma = "+abs(b2-a2)+"\u00B0",10,145);
           text("Kulma = "+(abs(b2-c2))+"\u00B0",250,145);
     }
     if ((b2 > c2) && (a2 >= b2)) {
           text("Kulma = "+abs(b2-a2)+"\u00B0",10,145);
           text("Kulma = "+(abs(b2-c2))+"\u00B0",250,145);
     }                         
}