Lukusuora
Lukusuora

Tämä simulaatio havainnollistaa pisteen piirtämistä lukusuoralle. Ohjelmalla voidaan havainnollistaa lukujen vertailua, yhteen- ja vähennyslaskuja, vastalukuja ja itseisarvoa. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.
// Ohjelman tehnyt e-Oppi Oy
// 18.2.2018
float a = 165; // Laskurin alkuarvo (ikkunan keskellä)
float b = 220; // Laskurin alkuarvo (ikkunan keskellä)
float e = 810;
void setup () {
size(1000,550); // 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 < 950)) { // 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 < 950)) { // 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>e) && (e < 900)) { // Jos hiiri on oikealla puolen
e++; // niin kasvata laskuria
}
if ((x1<e) && (x1 >0)) { // Jos hiiri on vasemmalla puolen
e--; // niin pienennä laskuria
}
}
}
int a2 = 0;
int b2 = 0;
int e2 = round(map(e,0,900,0,5));
if ((e2 == 0) || (e2 == 1) || (e2 == 4) || (e2 == 5)){
a2 = round(map(a,0,950,-24,24));
b2 = round(map(b,0,950,-24,24));
} else {
a2 = round(map(a,0,950,-12,12));
b2 = round(map(b,0,950,-12,12));
}
fill(255);
noStroke();
rect(0,150,1000,600);
stroke(0);
strokeWeight(2);
textSize(10);
fill(0);
for (int z = 1; z < 50; z++) {
line(z*20,440,z*20,460);
if (z >= 25) {
text(z-25,z*20-2,475);
} else {
text(z-25,z*20-8,475);
}
}
strokeWeight(3);
line(10,450,1000,450);
triangle(990,440,998,450,990,460);
textSize(30);
text("x",980,430);
pushMatrix();
translate(500,450);
scale(1,-1);
noStroke();
fill(255,0,0);
ellipse(a2*20,0,18,18);
if (e2 == 0) {
fill(0,0,255);
ellipse((b2)*20,0,16,16);
}
if (e2 == 1) {
fill(0,0,255);
ellipse((b2)*20,0,16,16);
scale(1,-1);
fill(0);
if (b2 > a2) {
text(a2+" < "+b2,-480,-300);
} else if (b2 < a2){
text(a2+" > "+b2,-480,-300);
} else {
text(a2+" = "+b2,-480,-300);
}
if (b2 >= 0) {
text(a2+" - (+"+b2+") = "+a2+""+(-b2)+" = "+(a2-b2),-480,-250);
} else {
text(a2+" - ("+b2+") = "+a2+"+"+(-b2)+" = "+(a2-b2),-480,-250);
}
text("Lukujen etäisyys toisistaan: |"+(a2-b2)+"|="+abs(a2-b2),-480,-200);
text(""+abs(a2-b2),(-10+20*(a2+b2)/2.0),-50);
scale(1,-1);
stroke(0,0,255);
strokeWeight(2);
line(a2*20,40,a2*20,20);
line(b2*20,40,b2*20,20);
line(a2*20,40,b2*20,40);
}
if (e2 == 2) {
fill(0,0,255);
ellipse((a2+b2)*20,0,16,16);
triangle((a2+b2)*20,10,10+(a2+b2)*20,20,-10+(a2+b2)*20,20);
stroke(0,0,255);
strokeWeight(2);
line(a2*20,40,a2*20,20);
line((a2+b2)*20,40,(a2+b2)*20,20);
line(a2*20,40,(a2+b2)*20,40);
fill(0);
scale(1,-1);
if (b2 >= 0) {
text("+"+b2,(-20+20*(a2+a2+b2)/2.0),-50);
text("Mennään lukusuoralla oikealle",-480,-250);
text(a2+"+(+"+b2+") = "+a2+"+"+b2+" = "+(a2+b2),-480,-200);
} else {
text(b2,(-20+20*(a2+a2+b2)/2.0),-50);
text("Mennään lukusuoralla vasemalle",-480,-250);
text(a2+"+("+b2+") = "+a2+""+b2+" = "+(a2+b2),-480,-200);
}
scale(1,-1);
}
if (e2 == 3) {
fill(0,0,255);
ellipse((a2-b2)*20,0,16,16);
triangle((a2-b2)*20,10,10+(a2-b2)*20,20,-10+(a2-b2)*20,20);
stroke(0,0,255);
strokeWeight(2);
line(a2*20,40,a2*20,20);
line((a2-b2)*20,40,(a2-b2)*20,20);
line(a2*20,40,(a2-b2)*20,40);
fill(0);
scale(1,-1);
if (b2 >= 0) {
text(""+(-b2),(-20+20*(a2+a2-b2)/2.0),-50);
text("+"+b2+":n vastaluku on "+(-b2),-480,-250);
text(a2+"-(+"+b2+") = "+a2+"-"+b2+" = "+(a2-b2),-480,-200);
} else {
text("+"+(-b2),(-20+20*(a2+a2-b2)/2.0),-50);
text(b2+":n vastaluku on +"+(-b2),-480,-250);
text(a2+"-("+b2+") = "+a2+"+"+(-b2)+" = "+(a2-b2),-480,-200);
}
scale(1,-1);
}
if (e2 == 4) {
fill(0,0,255);
ellipse((b2)*20,0,16,16);
// triangle((b2)*20,10,10+(b2)*20,20,-10+(b2)*20,20);
stroke(255,0,0);
strokeWeight(2);
line(0,40,0,20);
line((a2)*20,40,(a2)*20,20);
line(0,40,(a2)*20,40);
stroke(0,0,255);
line(0,-50,0,-30);
line((b2)*20,-50,(b2)*20,-30);
line(0,-50,(b2)*20,-50);
fill(0);
scale(1,-1);
if (b2 >= 0) {
text(abs(b2),(20*(b2/2.0)),80);
text("+"+b2+":n itseisarvo on "+(abs(b2)),-480,-200);
text("|+"+b2+"| = "+(abs(b2)),-480,-150);
} else {
text(abs(b2),(20*(b2/2.0)),80);
text(""+b2+":n itseisarvo on "+(abs(b2)),-480,-200);
text("|"+b2+"| = "+(abs(b2)),-480,-150);
}
if (a2 >= 0) {
text(abs(a2),(20*(a2/2.0)),-50);
text("+"+a2+":n itseisarvo on "+(abs(a2)),-480,-300);
text("|+"+a2+"| = "+(abs(a2)),-480,-250);
} else {
text(abs(a2),(20*(a2/2.0)),-50);
text(""+a2+":n itseisarvo on "+(abs(a2)),-480,-300);
text("|"+a2+"| = "+(abs(a2)),-480,-250);
}
scale(1,-1);
}
if (e2 == 5) {
fill(0,0,255);
ellipse((b2)*20,0,16,16);
triangle((-b2)*20,-20,10+(-b2)*20,-30,-10+(-b2)*20,-30);
fill(255,0,0);
triangle((-a2)*20,10,10+(-a2)*20,20,-10+(-a2)*20,20);
stroke(255,0,0);
strokeWeight(2);
line(0,40,0,20);
line((a2)*20,40,(a2)*20,20);
line(0,40,(a2)*20,40);
line((-a2)*20,40,(-a2)*20,20);
line(0,40,(-a2)*20,40);
stroke(0,0,255);
line(0,-50,0,-30);
line((b2)*20,-50,(b2)*20,-30);
line(0,-50,(b2)*20,-50);
line((-b2)*20,-50,(-b2)*20,-30);
line(0,-50,(-b2)*20,-50);
fill(0);
scale(1,-1);
if (b2 >= 0) {
text("+"+b2,-40+20*b2,80);
text(-b2,-20+20*(-b2),80);
text("+"+b2+":n vastaluku on "+(-b2),-480,-200);
text("-(+"+b2+") = "+(-b2),-480,-150);
} else {
text(b2,-20+20*b2,80);
text("+"+(-b2),-40-20*b2,80);
text(""+b2+":n vastaluku on +"+(-b2),-480,-200);
text("-("+b2+") = +"+(-b2),-480,-150);
}
if (a2 >= 0) {
text("+"+a2,-40+20*a2,-50);
text(-a2,-20-20*a2,-50);
text("+"+a2+":n vastaluku on "+(-a2),-480,-300);
text("-(+"+a2+") = "+(-a2),-480,-250);
} else {
text(a2,-20+20*a2,-50);
text("+"+(-a2),-40-20*a2,-50);
text(""+a2+":n vastaluku on +"+(-a2),-480,-300);
text("-("+a2+") = +"+(-a2),-480,-250);
}
scale(1,-1);
}
popMatrix();
stroke(0); // Musta viivan väri
strokeWeight(3);
fill(255,255,0); // Keltainen täyttöväri
rect(0,0,999,30); // Piirrä keltainen suorakulmio
rect(0,30,999,30); // Piirrä keltainen suorakulmio
rect(0,60,999,30);
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(e,60,100,30);
textSize(20);
fill(0);
textSize(20);
text(""+a2,a+4,25);
text(""+b2,b+4,55);
textSize(15);
if (e2 == 0) {
text("Pisteet",e+4,85);
}
if (e2 == 1) {
text("Vertailu",e+4,85);
}
if (e2 == 2) {
text("yht. lasku",e+4,85);
}
if (e2 == 3) {
text("väh. lasku",e+4,85);
}
if (e2 == 4) {
text("Itseisarvo",e+4,85);
}
if (e2 == 5) {
text("Vastaluku",e+4,85);
}
}