Kehäkulma

Kehäkulma



Tämä simulaatio havainnollistaa keskuskulman ja kehäkulman välistä suhdetta. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 19.2.2018
float a = 275; // Laskurin alkuarvo (ikkunan keskellä)
float b = 0; // 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,1,10));
     int b2 = round(map(b,0,550,0,360));
     int c2 = round(map(c,0,550,0,360));
     int 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);
        text("1",323,470);
        text("1",280,430);
        pushMatrix();
        translate(300,450);
        scale(1,-1);
       fill(255,0,0,200);
       if (c2 >= b2) {
          arc(0,0,30,30,radians(b2),radians(c2),PIE);
       } else {
         arc(0,0,30,30,radians(c2),radians(b2),PIE);
       }
       noFill();
       stroke(255,0,0);
       if (d2 >= b2) {
          arc(0,0,60*a2,60*a2,radians(b2),radians(d2),CHORD);
       } else {
          arc(0,0,60*a2,60*a2,radians(d2),radians(b2),CHORD);
       }
       if (d2 >= c2) {
         arc(0,0,60*a2,60*a2,radians(c2),radians(d2),CHORD);
       } else {
         arc(0,0,60*a2,60*a2,radians(d2),radians(c2),CHORD); 
       }
       if ((d2 >= b2) && (d2 <= c2)) {
           float xd = 30*a2*cos(radians(d2));
           float yd = 30*a2*sin(radians(d2));
           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));
           float dy = yd-yb;
           float dx = xd-xb;
           float dy2 = yd-yc;
           float dx2 = xd-xc;
           line(xd,yd,xd+20*dx,yd+20*dy);
           line(xd,yd,xd-20*dx2,yd-20*dy2);
       }
       if ((d2 >= c2) && (d2 <= b2)) {
           float xd = 30*a2*cos(radians(d2));
           float yd = 30*a2*sin(radians(d2));
           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));
           float dy = yd-yc;
           float dx = xd-xc;
           float dy2 = yd-yb;
           float dx2 = xd-xb;
           line(xd,yd,xd+20*dx,yd+20*dy);
           line(xd,yd,xd-20*dx2,yd-20*dy2);
       }
       stroke(0);
       strokeWeight(5);
           ellipse(0,0,60*a2,60*a2);
           point(0,0);
           stroke(0,0,255);
       if (c2 >= b2) {
          arc(0,0,60*a2,60*a2,radians(b2),radians(c2),PIE);
       } else {
          arc(0,0,60*a2,60*a2,radians(c2), radians(b2),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);        
        text("Säde r = "+a2,0,145);
        text("Keskuskulma = "+abs(c2-b2)+"\u00B0",150,145);
        text("Kehäkulma = "+abs(c2-b2)/2.0+"\u00B0",400,145);     
}