Twitter Facebook Google +
Kaikki tämän artikkelin käsittelykoodi kuvineen löytyy GitHubista
viime vuoden alussa haastoin itseni keksimään kaksikymmentäviisi mallia käyttäen vain Perlin flow-kenttiä ja jatkoin sitä seitsemänkymmentäviisi eri tapaa piirtää circle.In tässä artikkelissa tutustun toiseen yksinkertaiseen haasteeseen: viisitoista erilaista tapaaraw mielenkiintoisia linjoja.
rajoitteet
asetin tälle haasteelle kolme rajoitusta. Kuten aiemminkin, ensimmäinen rajoitukseni oli aloittaa värien käyttö, jotta voisin keskittyä muotoihin ja muotoihin sen sijaan.
toiseksi jokainen versio olisi toteutettava itsenäisenä, uudelleenkäytettävänä toimintona seuraavan ilmoituksen mukaisesti:
void line(float x1, float y1, float x2, float y2, float weight, float value) { /* * Draw a line from (x1, y1) to (x2, y2) with a given * weight and darkness (value) */}
näin voin helposti uusiokäyttää ne myöhemmin muihin teoksiin. Yllä näet, että se määrittää kaksi lisäparametria: iskun paino ja arvo (tai keveys/pimeys).
kolmantena ja viimeisenä rajoituksena jokaisessa versiossa piti olla jokin generatiivinen/menettelyllinen osa. Toisin sanoen joka kerta,kun funktiota kutsutaan, on luotava uusi muunnos.
jo riittää puhuminen. Tässä tulokset! Nauti!
viisitoista riviä
aloitin etsimälläni eri painoilla ja arvoilla tehdyllä perusmuotoilulla ja menin yksinkertaisimmalla mahdollisella linjalla. Alla iskun paino nousee vasemmalta oikealle, ja arvot kevenevät ylhäältä alas:
#1
seuraava haluni oli muodostaa viivan paksuus useista ohuemmista viivoista. Viivan jatkeena voidaan pitää ympyrää, jonka läpimitta on määritelty weight
.Olen luonut satunnaisen pisteen ympyrän sisällä ensimmäisen päätepisteen ympärillä ja toinen toisen ympärillä, ja liitä ne viivalla, jonka väri perustuu määritettyyn arvoon:
#2
sen sijaan, että olisin piirtänyt kokonaisia viivoja, otin sen sijaan näytteitä muutamasta pisteestä suoralla insteadand piirsi pieniä ellipsejä (vaaditulla opasiteetilla saadaksesi oikean arvon):
#3
halusin kokeilla, voisinko käyttää mustaa täytettä ellipseille ja varythearvolle käyttäen vain näytteenoton tiheyttä, ja se näyttää toimivan quitewell:
#4
päätin vaihtaa vaihdetta hieman ja, kun on luotu muutamia satunnaisia pisteitä sisällä theline muoto, loi Delaunay kaavio (käyttäen Lee Byron fantastinen Mesh kirjastonkäsittelyyn. Arvo määräytyi viivojen valottomuuden mukaan:
#5
koska käytin Mesh kirjasto muutenkin, ajattelin myös yrittää tehdä vain akonvex rungon satunnaisesti luotuja pisteitä. Tämä antaa mielenkiintoisen siveltimenmaiseman:
#6
tässä vaiheessa halusin kokeilla muunnelmaa aiemmasta sketsistä: sen sijaan, että olisin yleistänyt rivimme päätepisteiden lähelle päättyviä rivejä, halusin luoda ne missä tahansa viivan muodossa. Tulos oli hienovaraisesti erilainen, mutta eri ei ollut erityisen havaittavissa:
#7
koska tein satunnaisia pisteitä viivan muotoisina, ajattelin, että piirrän vain ellipsejä. Käytän satunnaista halkaisijaa määritetyn painon perusteella,mutta tämä on ensimmäinen, jossa alan piirtää alkuperäisen muodon rajojen ulkopuolelle:
#8
seuraavassa poistin täytön ja käytin vain ohutta ääriviivaa. Vihje: prosessoinnissa voidaan määritellä murtovetopainoja, jotta saadaan ohuempia viivoja (esim.strokeWeight(0.5)
)
#9
sen sijaan, että olisin luonut ellipsejä, joissa on satunnaisia kantoja ja halkaisijoita, päätin generatethem alkuperäisellä linjalla, jonka satunnainen halkaisija on määritettyyn iskupainoon asti.:
#10
tällä kertaa menin stroke-vain versio täytetty versio, koska olin juuridone että vaihtelu välillä #8 ja #9:
#11
nyt päätin yhdistää iskunvaimennus-ja täyteversiot. Käytin vastakkaisia värejä iskulle ja täytölle saadakseni eri arvot: vaaleammilla arvoilla on adark-aivohalvaus hyvin vaalealla täytöllä, kun taas tummemmilla arvoilla on vaalea aivohalvaus amuch tummemmalla täytöllä:
#12
siirryin toteuttamaan yksinkertaisen kävelijän, joka kävelee linjaa pitkin satunnaisilla vaihdoilla paikallaan. Olen päällekkäin nippu näitä saada seuraavan iteraation:
#13
pienensin askelmäärän hyvin pieneksi saadakseni kohtisuoran raapustuksen, ja piirsin vain yhden kävelyn päätepisteestä päätepisteeseen satunnaisvaihteluin määritetyn iskupainon perusteella: