Kulma
Kulma

Tämä simulaatio havainnollistaa kulmien luokittelua. Lisäksi voidaan harjoitella piirtokolmion käyttöä. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.
// Ohjelman tehnyt e-Oppi Oy
// 18.2.2018
float b = 0;
float d = 0; // 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 < 40)) {
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 > 40) && (y1 < 80)) {
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
}
}
}
fill(0); // Musta tekstin väri
int d2 = round(map(d,0,550,0,360));
int b2 = round(map(b,0,550,0,4));
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);
}
pushMatrix();
translate(300,450);
scale(1,-1);
noFill();
strokeWeight(3);
stroke(255,0,0);
arc(0,0,1000,1000,radians(0),radians(d2),PIE);
arc(0,0,60,60,radians(0),radians(d2),PIE);
float dx = 210*cos(radians(d2));
float dy = 210*sin(radians(d2));
fill(255,0,0);
ellipse(dx,dy,10,10);
ellipse(210,0,10,10);
ellipse(0,0,10,10);
line(0,0,400,0);
fill(0);
textSize(20);
scale(1,-1);
text("C",dx+10,-dy-10);
text("B",4,20);
text("A",210,20);
scale(1,-1);
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,40); // Piirrä keltainen suorakulmio
rect(0,40,849,40); // Piirrä keltainen suorakulmio
fill(255,100,100); // Punainen täyttöväri
rect(d,0,50,40); // Piirrä punainen neliö
rect(b,40,50,40); // Piirrä punainen neliö
fill(0);
textSize(20);
text(""+d2+"\u00B0",d+4,35);
text(""+b2,b+4,75);
text("Kulmien luokittelu",10,110);
text("\u2222ABC = "+d2+"\u00B0",10,145);
text("\u2222CBA = "+(360-d2)+"\u00B0",150,145);
if (d2 == 0) {
text("Nollakulma",300,145);
}
if ((d2 > 0) && (d2 < 90)) {
text("Terävä kulma, kovera kulma",300,145);
}
if (d2 == 90) {
text("Suorakulma, kovera kulma",300,145);
}
if ((d2 > 90) && (d2 < 180)) {
text("Tylppä kulma, kovera kulma",300,145);
}
if (d2 == 180) {
text("Oikokulma",300,145);
}
if ((d2 > 180) && (d2 < 360)) {
text("Kupera kulma",300,145);
}
if (d2 == 360) {
text("Täysi kulma",300,145);
}
if (b2 == 1) {
piirtokolmio(180);
}
if (b2 == 2) {
piirtokolmio(90);
}
if (b2 == 3) {
piirtokolmio(0);
}
if (b2 == 4) {
piirtokolmio(270);
}
}
void piirtokolmio(float kulma) {
fill(0,100,255,100);
noStroke();
float h = 300;
pushMatrix();
translate(300,450);
rotate(radians(kulma));
triangle(-h,0,h,0,0,h);
fill(0);
ellipse(0,0,5,5);
for (int s = 0; s <= 180; s = s + 10) {
float a1 = 200*cos(radians(s));
float b1 = 200*sin(radians(s));
float a2 = 10*cos(radians(s));
float b2 = 10*sin(radians(s));
stroke(0,0,255);
strokeWeight(1);
line(a1,b1,a2,b2);
}
for (int s = 0; s <= 180; s = s + 5) {
float a1 = 200*cos(radians(s));
float b1 = 200*sin(radians(s));
float a2 = 180*cos(radians(s));
float b2 = 180*sin(radians(s));
stroke(0);
strokeWeight(1);
line(a1,b1,a2,b2);
}
for (int s = 0; s <= 180; s = s + 45) {
float a1 = 200*cos(radians(s));
float b1 = 200*sin(radians(s));
float a2 = 40*cos(radians(s));
float b2 = 40*sin(radians(s));
stroke(255,0,255);
strokeWeight(1);
line(a1,b1,a2,b2);
}
for (int s = 0; s <= 180; s = s + 1) {
float a1 = 200*cos(radians(s));
float b1 = 200*sin(radians(s));
stroke(0);
strokeWeight(1);
point(a1,b1);
}
popMatrix();
}