Close menu
Close menu

Tunnistaudu

Kirjaudu

Etkö ole vielä jäsen?

Liity jäseneksi

Bezier-viiva

Jos haluaisimme piirtää omenan, niin kuinka piirrettäisiin kaarevia muotoja? Se on onnistuu bezier-funktiolla. Bezier-funktio on muotoa:

bezier(x1,y1,x2,y2,x3,y3,x4,y4);

missä piste (x1,y1) on viivan alkupiste ja (x4,y4) on viivan loppupiste. Pistettä (x1,y1) väännetään kahvalla, jonka päätepiste on (x2,y2), vastaavasti pistettä (x4,y4) väännetään kahvalla, jonka päätepiste on (x3,y3).

Katsotaan asiaa esimerkin avulla.

  • Kun menemme pisteestä A = (250,200) pisteeseen D = (250,400) oikeaa reunaa pitkin, niin silloin väännämme pistettä A kahvalla B. Kahva B on pisteessä (400,100). Vastaavasti väännämme pistettä D kahvalla C. Kahva C on pisteessä (450,400). Kun laitamme pisteet järjestykseen eli A,B,C,D, niin voimme kirjoittaa tästä piirtokomennon muotoon: bezier(250,200,400,100,450,400,250,200);
  • Kun menemme pisteestä A = (250,200) pisteeseen D = (250,400) vasenta reunaa pitkin, niin silloin väännämme pistettä A kahvalla E. Kahva E on pisteessä (100,100). Vastaavasti väännämme pistettä D kahvalla F. Kahva F on pisteessä (50,400). Kun laitamme pisteet järjestykseen eli A,E,F,D, niin voimme kirjoittaa tästä piirtokomennon muotoon: bezier(250,200,100,100,50,400,250,200);

Näistä kahdesta omenan puolikkaasta muodostuu kokonainen omena. Kokonainen ohjelma on seuraavanlainen

function setup() {
  createCanvas(500, 500); // Ikkunan koko on 500 x 500
  strokeWeight(5);        // Viivan paksuus on 5
}

function draw() {
  background(0,255,255);                   // Asetetaan taustan väriksi syaani
  fill(255,0,0);                           // Asetetaan täyttöväri punaiseksi
  bezier(250,200,400,100,450,400,250,400); // Piste A(250,200), kahva B(400,100), Kahva C(450,400), Piste D(250,400)
  bezier(250,200,100,100,50,400,250,400);  // Piste A(250,200), kahva E(100,100), Kahva F(50,400), Piste D(250,400)
}

Jos haluat kokeilla mikä vaikutus kahvalla on viivan kaarevuuteen, niin muutetaan ohjelmaa seuraavasti.

function setup() {
  createCanvas(500, 500);       // Ikkunan koko on 500 x 500
  strokeWeight(5);              // Viivan paksuus on 5
}

function draw() {
  background(0,255,255);                         // Asetetaan taustan väriksi syaani
  fill(255,0,0);                                 // Asetetaan täyttöväri punaiseksi
  bezier(250,200,mouseX,mouseY,450,400,250,400); // bezier-komento, jossa kahvan paikka luetaan hiiren liikkeistä: (mouseX,mouseY)
  line(250,200,mouseX,mouseY); // Piirretään kahvan paikalle viiva 
  ellipse(mouseX,mouseY,10,10); // Piirretään kahvan päähän pieni ympyrä
}

Ohjelma toimii seuraavasti.

Hiirtä seuraava liekki

Kokeillaan miten bezier-viiva käyttäytyy random-funktion kanssa.

function setup() {
  createCanvas(600, 600);  // Ikkunan koko on 600 x 600
  frameRate(10);           // Animaation nopeus 1o kuvaa sekunnissa
}

function draw() {
  background(0,200,255);    // Taustaväri sininen
  fill(255,150,0);          // Täyttöväri oranssi
  bezier(mouseX,mouseY,random(200),random(200),random(200), 400+random(200),300,500);
  bezier(mouseX,mouseY,300+random(200),random(200),400+random(200), 400+random(200),300,500);
  fill(220,220,220);        // Täyttöväri harmaa
  rect(250,500,100,100);    // Piirrä neliö, jonka nurkkapiste on (250,500) ja sivun pituus 100.
}

Ohjelma toimii seuraavasti.