Kaksi suoraa
Kaksi suoraa

Simulaatio havainnollistaa kahden suoran leikkauspistettä. Ohjelman koodi on alla. Kopioi tämä koodi kokonaisuudessaan ohjelmointiympäristöön ja suorita koodi. Sinun ei tarvitse tehdä koodiin mitään muutoksia.
// Ohjelman tehnyt e-Oppi Oy
// 28.3.2018
float a = 165; // Laskurin alkuarvo (ikkunan keskellä)
float b = 220; // Laskurin alkuarvo (ikkunan keskellä)
float c = 385; // Laskurin alkuarvo (ikkunan keskellä)
float d = 412; // 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) && (a >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) && (b>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) && (c>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) && (d>0)) { // Jos hiiri on vasemmalla puolen
d--; // niin pienennä laskuria
}
}
}
fill(0); // Musta tekstin väri
float a2 = round(10*map(a,0,550,-10,10))/10.0;
float b2 = round(10*map(b,0,550,-10,10))/10.0;
float c2 = round(10*map(c,0,550,-10,10))/10.0;
float d2 = round(10*map(d,0,550,-10,10))/10.0;
float xl = (d2-b2)/(a2-c2);
float yl = a2*xl+b2;
fill(255);
noStroke();
rect(0,150,600,600);
stroke(100);
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);
stroke(255,0,0);
strokeWeight(4);
int x2 = -300;
float y2 = a2*x2+b2*30;
int x3 = 300;
float y3 = a2*x3+b2*30;
line(x2,y2,x3,y3);
y2 = c2*x2+d2*30;
y3 = c2*x3+d2*30;
stroke(255,0,255);
line(x2,y2,x3,y3);
noStroke();
fill(0,0,255);
ellipse(xl*30,yl*30,10,10);
popMatrix();
fill(0);
text("A",280+xl*30,440-yl*30);
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);
if (b2 >= 0) {
text(" y = "+a2+"\u00B7x +"+b2,20,140);
} else{
text(" y = "+a2+"\u00B7x "+b2,20,140);
}
if (d2 >= 0) {
text(" y = "+c2+"\u00B7x +"+d2,210,140);
} else {
text(" y = "+c2+"\u00B7x "+d2,210,140);
}
if ((a2 == c2) && (b2 != d2)) {
text("A = (-,-)",420,140);
} else
if ((a2 == c2) && (b2 == d2)) {
text("A = (\u221E,\u221E)",420,140);
}
else {
text("A = ("+round(xl*10)/10.0+","+round(yl*10)/10.0+")",400,140);
}
textSize(20);
text(""+a2,a+4,25);
text(""+b2,b+4,55);
text(""+c2,c+4,85);
text(""+d2,d+4,115);
}