Peilaus
Peilaus

Tämä simulaatio havainnollistaa peilausta x-akselin, y-akselin ja origon suhteen. Ohjelmalla voidaan piirtää xy-koordinaatistoon niin, että kuvio peilautuu halutulla tavalla. Tyhjennä-painikkeesta voidaan piirustusjälki tyhjentää. 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ä)
boolean tyhjenna = false;
void setup () {
size(600,750); // ikkunan koko
background(255); // Tyhjennä tausta
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);
}
void draw() {
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 < 400)) { // 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 > 90) && (y1 < 130)) {
if ((x1>400) && (x1 < 550)) { // Jos hiiri on oikealla puolen
tyhjenna = true;
}
}
}
fill(0); // Musta tekstin väri
int a2 = round(map(a,0,400,0,4));
if ( tyhjenna == true) {
background(255);
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);
tyhjenna = false;
}
pushMatrix();
translate(300,450);
strokeWeight(5);
if (mousePressed == true) {
if ((y1 > 150) && (y1 < 750)) {
if ((x1>0) && (x1 < 600)) { // Jos hiiri on oikealla puolen
stroke(0,0,255);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
if (a2 == 1) {
scale(1,-1);
stroke(255,0,0);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
}
if (a2 == 2) {
scale(-1,1);
stroke(255,0,0);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
}
if (a2 == 3) {
scale(-1,-1);
stroke(255,0,0);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
}
if (a2 == 4) {
scale(1,-1);
stroke(255,0,0);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
scale(-1,1);
stroke(255,0,255);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
scale(1,-1);
stroke(0,255,255);
line(mouseX-300,mouseY-450,pmouseX-300,pmouseY-450);
}
}
}
}
popMatrix();
fill(0);
noStroke();
fill(255);
rect(0,0,600,149);
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
fill(255,100,100); // Punainen täyttöväri
rect(a,0,200,30); // Piirrä punainen neliö
rect(400,90,150,40,30);
textSize(20);
fill(0);
textSize(20);
if (a2 == 0) {
text("Ei peilausta",a+4,25);
text("Ei peilausta",10,70);
}
if (a2 == 1) {
text("x-akseli",a+4,25);
text("Peilaus x-akselin suhteen",10,70);
}
if (a2 == 2) {
text("y-akseli",a+4,25);
text("Peilaus y-akselin suhteen",10,70);
}
if (a2 == 3) {
text("Origo",a+4,25);
text("Peilaus origon suhteen",10,70);
}
if (a2 == 4) {
text("Kaikki",a+4,25);
text("Peilaus x-akselin, y-akselin ja origon suhteen",10,70);
}
text("Tyhjennä",420,120);
}