Kartio ja lieriö

Kartio ja lieriö

LIERIÖ

Lieriö saadaan piirrettyä viivan avulla, kun kuljetaan yhtä aikaa kahden eri paikassa olevan samanlaisen ympyrän kehäpisteillä. Kun yhdistetään pisteet (x1,y1,0) ja (x1,y1,h) viivalla, saadaan aikaiseksi lieriön vaippa. Jos nämä pisteet yhdistetään viivalla z-akselilla olevaan ympyrän keskipisteeseen, saamme aikaiseksi lieriön pohjat. Lisäämällä liukuväriä vaippaan saamme lisättyä kolmiulotteisuuden tuntua.

Esitellään seuraavaksi valmis aliohjelma lieriön piirtämiseksi. Aliohjelmassa on se hyvä puoli, että voit välittää sinne kutsun yhteydessä lieriön säteen ja korkeuden. Jos haluat siirtää lieriötä uuteen paikkaan, voit tehdä sen translate(x,y,z)-komennolla.
void setup () {
size(600, 600, P3D); // Luodaan XYZ-koordinaatisto 600x600 ikkunaan
strokeWeight(5); // Reunaviivan paksuus 5
noFill(); // Ei täyttöä
}
void draw () {
background(0); // Taustaväri mustaksi
translate(width/2, height/2,0); // Origo ikkunan keskelle
rotateY(radians(mouseX)); // Pyöritä y-akselia hiiren vaakaliikkeen avulla
rotateX(radians(mouseY)); // Pyöritä x-akselia hiiren pystyliikkeen avulla
lierio(120,200); // Piirrä lieriö, jonka säde on 120 ja korkeus 200
}

void lierio (float r, float h) {
float b= 0; // b saa alkuarvon 0
for (int a = 0; a< 360; a++) { // a kasvaa 0:sta 360:een
float x1 = r*cos(radians(a)); // Laske ympyrän kehäpiste x1
float y1 = r*sin(radians(a)); // Laske ympyrän kehä piste y1
stroke(255,255,50); // Aseta reunaviivan väri keltaiseksi
line(x1,y1,0,0,0,0); // Piirrä alapohja viivojen avulla
line(x1,y1,h,0,0,h); // Piirrä yläpohja viivojen avulla
b = b+0.5; // Kasvata b:tä eli muuta väriä b:n avulla
if (b < 90) { // Jos b on pienempi kuin 90, niin
stroke(200-b,200-b,0); // tummenna väriä
} else { // muutoin
stroke(20+b,20+b,0); // vaalenna väriä
}
line(x1,y1,0,x1,y1,h); // Piirrä vaippa viivojen avulla
}
}

KARTIO

Vastaavalla tavalla voimme piirtää kartion. Nyt siirrämme vain toisen kehäpisteistä z-akselille, niin viiva piirtää kartion vaipan pisteiden (x1,y1,0) ja (0,0,h) avulla. Lisäksi tarvitsemme piirtää vain yhden pohjan. Alla oleva kuva havainnollistaa asiaa.


Samalla tavalla valmis aliohjelma kartiolle on seuraavanlainen.
vvoid setup () {
size(600, 600, P3D); // Luodaan XYZ-koordinaatisto 600x600 ikkunaan
strokeWeight(5); // Reunaviivan paksuus 5
noFill(); // Ei täyttöä
}
void draw () {
background(0); // Taustaväri mustaksi
translate(width/2, height/2,0); // Origo ikkunan keskelle
rotateY(radians(mouseX)); // Pyöritä y-akselia hiiren vaakaliikkeen avulla
rotateX(radians(mouseY)); // Pyöritä x-akselia hiiren pystyliikkeen avulla
kartio(120,200); // Piirrä kartio, jonka säde on 120 ja korkeus 200
}

void kartio (float r, float h) {
float b= 0; // b saa alkuarvon 0
for (int a = 1; a< 360; a++) { // a kasvaa 0:sta 360:een
float x1 = r*cos(radians(a)); // Laske ympyrän kehäpiste x1
float y1 = r*sin(radians(a)); // Laske ympyrän kehäpiste y1
stroke(255,255,50); // Aseta reunaviivan väri keltaiseksi
line(x1,y1,0,0,0,0); // Piirrä pohja viivan avulla
b = b+0.5; // Kasvata b:tä 0.5:llä eli muuta väriä b:n avulla
if (b < 90) { // Jos b on pienempi kuin 90, niin
stroke(200-b,200-b,0); // tummenna väriä
} else { // muutoin
stroke(20+b,20+b,0); // vaalenna väriä
}
line(x1,y1,0,0,0,h); // Piirrä vaippa viivoilla
}
}

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä