Kukka
Muutetaan void draw()-lohkoon kaksi sisäkkäistä for-silmukkaa.
Jolloin saamme aikaiseksi kukan terälehden. Sisempi silmukka piirtää ympyrän kaaren, jossa keskuskulma on 90 astetta eli 15 ∙ 6° = 90°. Ennen toisen kaaren piirtämistä muutamme suuntaa 90 astetta. Ulompi silmukka käskee piirtämään kaksi kaarta. Kahdesta kaaresta muodostuu kukan terälehden muoto.

Jos haluat pidemmän terälehden, niin silloin kasvata lukuarvoa funktion: eteen(3); kutsussa. Luodaan tästä oma funktio eli lisäämme void draw ()-lohkon alle seuraavan uuden funktion: lehti(pituus);
Nyt voimme lyhentää void draw ()-lohkon muotoon.
Tässä muodossa voimme kutsua lehti()-funktiota. Mitä isompi arvo, sitä pidempi lehti piirretään.
Voisimmeko piirtää terälehdistä kukan? Lisätään uusi for-silmukka void draw ()-lohkoon, joka piirtää 10 kappaletta terälehtiä, niin että jokainen uusi terälehti piirretään 36 astetta kierrettynä myötäpäivään, kuin edellinen terälehti. Koska 10 ∙ 36° = 360°, saamme aikaiseksi täyden ympyrän ja kymmenestä terälehdestä muodostuu kukka. Koodi, joka piirtää kukan on seuraava.
Kukka näyttää nyt tältä.

Voimme jatkaa ideaa eteenpäin eli voimme määritellä funktion: kukka(), joka on seuraavanlainen.
Välitämme kukka()- funktiolle lehtien lukumäärän ja terälehden pituuden. Lehtien lukumäärä vaikuttaa myös siihen kulmaan, jonka arvolla seuraava lehti piirretään. Oikea kulman arvo saadaan selville jakolaskusta, joka on 360 jaettuna lehtien lukumäärä.
Kun kutsut void draw ()-lohkossa kukkaa nyt komennolla, niin lopputulos on esimerkiksi seuraavanlainen.
Lopuksi esitetään vielä kokonainen ohjelma, johon on vielä lisätty ylimääräinen for-silmukka void draw ()-lohkoon. Tämä ylimääräinen silmukka piirtää kuusi kukkaa ympyrän kehälle.
Tulostuu seuraavaa.

void draw () {
translate(width/2,height/2); // Origo ikkunan keskelle
scale(1,-1); // xy-koordinaastio peilaamalla y-koordinaatit
for (int luku2=1; luku2 <=2; luku2++) {
for (int luku1=1; luku1 <= 15; luku1++) {
eteen(3);
oikealle(6);
}
oikealle(90);
}
}
Jolloin saamme aikaiseksi kukan terälehden. Sisempi silmukka piirtää ympyrän kaaren, jossa keskuskulma on 90 astetta eli 15 ∙ 6° = 90°. Ennen toisen kaaren piirtämistä muutamme suuntaa 90 astetta. Ulompi silmukka käskee piirtämään kaksi kaarta. Kahdesta kaaresta muodostuu kukan terälehden muoto.

Jos haluat pidemmän terälehden, niin silloin kasvata lukuarvoa funktion: eteen(3); kutsussa. Luodaan tästä oma funktio eli lisäämme void draw ()-lohkon alle seuraavan uuden funktion: lehti(pituus);
void lehti(int pituus) {
for (int luku2=1; luku2 <=2; luku2++) {
for (int luku1=1; luku1 <= 15; luku1++) {
eteen(pituus);
oikealle(6);
}
oikealle(90);
}
}
Nyt voimme lyhentää void draw ()-lohkon muotoon.
void draw () {
translate(width/2,height/2); // Origo ikkunan keskelle
scale(1,-1); // xy-koordinaastio peilaamalla y-koordinaatit
lehti(3);
}
Tässä muodossa voimme kutsua lehti()-funktiota. Mitä isompi arvo, sitä pidempi lehti piirretään.
Voisimmeko piirtää terälehdistä kukan? Lisätään uusi for-silmukka void draw ()-lohkoon, joka piirtää 10 kappaletta terälehtiä, niin että jokainen uusi terälehti piirretään 36 astetta kierrettynä myötäpäivään, kuin edellinen terälehti. Koska 10 ∙ 36° = 360°, saamme aikaiseksi täyden ympyrän ja kymmenestä terälehdestä muodostuu kukka. Koodi, joka piirtää kukan on seuraava.
void draw () {
translate(width/2,height/2); // Origo ikkunan keskelle
scale(1,-1); // xy-koordinaastio peilaamalla y-koordinaatit
for (int luku3 = 1; luku3 <= 10; luku3++) {
lehti(4);
oikealle(36);
}
}
Kukka näyttää nyt tältä.

Voimme jatkaa ideaa eteenpäin eli voimme määritellä funktion: kukka(), joka on seuraavanlainen.
void kukka(int lehtia, int pituus) {
for (int luku3 = 1; luku3 <= lehtia; luku3++) {
lehti(pituus);
oikealle(round(360/lehtia));
}
}
Välitämme kukka()- funktiolle lehtien lukumäärän ja terälehden pituuden. Lehtien lukumäärä vaikuttaa myös siihen kulmaan, jonka arvolla seuraava lehti piirretään. Oikea kulman arvo saadaan selville jakolaskusta, joka on 360 jaettuna lehtien lukumäärä.
Kun kutsut void draw ()-lohkossa kukkaa nyt komennolla, niin lopputulos on esimerkiksi seuraavanlainen.
Lopuksi esitetään vielä kokonainen ohjelma, johon on vielä lisätty ylimääräinen for-silmukka void draw ()-lohkoon. Tämä ylimääräinen silmukka piirtää kuusi kukkaa ympyrän kehälle.
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int x = 0;
int y = 0;
void setup () {
size(800,800); // Ikkunan koko
background(255); // Taustaväri valkoinen
fill(255,0,0); // Täyttöväri punainen
noStroke(); // Ei reunaviivaa
noLoop(); // Suoritetaan void draw () lohko kerran
}
void draw () {
translate(width/2,height/2); // Origo ikkunan keskelle
scale(1,-1); // xy-koordinaastio peilaamalla y-koordinaatit
for (int luku4 = 1; luku4 <= 6; luku4++) { // Kuusi toistoa
kukka(6,3); // Kukassa kuusi terälehteä, jonka pituus on 3
translate(100,0); // Siirry 100 oikealle
oikealle(60); // Pyöritä koordinaatistoa
}
}
void kukka(int lehtia, int pituus) {
for (int luku3 = 1; luku3 <= lehtia; luku3++) {
lehti(pituus);
oikealle(360/lehtia);
}
}
void lehti(int pituus) {
for (int luku2=1; luku2 <=2; luku2++) {
for (int luku1=1; luku1 <= 15; luku1++) {
eteen(pituus);
oikealle(6);
}
oikealle(90);
}
}
void eteen(int askel) {
for (int a = 0; a < askel; a++) {
x = x + 1;
ellipse(x,y,10,10);
}
translate(askel,0);
x = 0;
}
void taakse(int askel) {
for (int a = 0; a < askel; a++) {
x = x - 1;
ellipse(x,y,10,10);
}
translate(-askel,0);
x = 0;
}
void vasemmalle(int kulma) {
rotate(radians(kulma));
}
void oikealle(int kulma) {
rotate(radians(-kulma));
}
Tulostuu seuraavaa.




