cincisprezece moduri de a desena o linie

partajați această pagină
Twitter Facebook Google +

toate cod de procesare pentru acest articol ,împreună cu imagini, pot fi găsite pe Github

la începutul anului trecut m-am provocat să vină cu douăzeci și cinci de modele folosind onlyperlin flow fields și circle.In acest articol explorez o altă provocare simplă: cincisprezece moduri diferitetrageți linii interesante.

constrângerile

am stabilit trei constrângeri pentru această provocare. Ca și până acum, prima mea constrângere a fost să renunț la utilizarea culorii, astfel încât să mă pot concentra pe forme și forme.

în al doilea rând, fiecare versiune ar trebui să fie puse în aplicare ca un independent, re-usablefunction conforme cu următoarea declarație:

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 acest fel, le pot reutiliza cu ușurință mai târziu pentru alte lucrări. Mai sus, veți vedea că Estespecificați doi parametri suplimentari: o greutate a cursei și o valoare (sau ușurință/întuneric).

ca a treia și ultima constrângere, fiecare versiune trebuia să aibă o componentă generativă/procedurală. Adică, de fiecare dată când funcția este apelată,ar trebui generată o nouă variantă.

destul cu vorbitul. Iată rezultatele! Bucurați-vă!

cincisprezece linii

am început cu o formatare de bază a diferitelor greutăți și valori pe care le căutamși a mers cu cea mai simplă linie posibilă. Mai jos, greutatea cursei crește de la stângala dreapta, iar valorile devin mai ușoare de sus în jos:

#1

următoarea mea dorință imediată a fost să formez grosimea liniei din mai multe linii mai subțiri. Capetele liniei pot fi văzute ca un cerc cu diametrul specificat de weight.Am generat un punct aleatoriu în interiorul cercului în jurul primului punct final șiun altul în jurul celui de-al doilea și le-am conectat cu o linie a cărei culoare se bazează pevaloarea specificată:

#2

în loc să desenez linii complete, am prelevat în schimb câteva puncte pe linie și am desenat elipse mici (cu opacitatea necesară pentru a obține valoarea corectă):

#3

am vrut să încerc și să văd dacă aș putea folosi o umplere negru solid pentru elipse și varythe valoare folosind doar densitatea de eșantionare în sine, și se pare să funcționeze destul de bine:

#4

am decis să schimb puțin angrenajele și, după ce am generat câteva puncte aleatorii în interiorforma liniei, a creat o diagramă Delaunay (folosind biblioteca fantastică de plasă a lui Lee byronpentru procesare. Valoarea a fost determinată de luminozitateaa liniilor:

#5

Din moment ce am fost folosind biblioteca Mesh oricum, m-am gândit că ar încerca, de asemenea, să facă Coca doar aconvexă a punctelor generate aleator. Acest lucru oferă o formă interesantă de pensulă:

#6

în acest moment am vrut să încerc o variantă a unei schițe anterioare: în loc să generez linii aleatorii care se termină în apropierea punctelor finale ale liniei noastre, am vrut să le generez oriunde în forma liniei. Rezultatul a fost subtil diferite, dar diferite nu a fost deosebit de perceptibil:

#7

Din moment ce generam puncte aleatorii de-a lungul formei liniei, oricum, m-am gândit să desenez niște elipse. Folosesc diametre aleatorii pe baza greutății specificate,dar acesta este primul în care încep să desenez în afara limitelor formei originale:

#8

în următoarea, am îndepărtat umplutura și am folosit doar o cursă subțire de contur. Sfat: putețispecificați greutățile fracționare ale cursei în procesare pentru a obține linii mai subțiri (de ex.strokeWeight(0.5))

#9

în loc să generez elipse cu poziții și diametre aleatorii, am decis să le generez pe linia inițială cu un diametru aleatoriu până la greutatea cursei specificate:

#10

de data aceasta am trecut de la versiunea numai accident vascular cerebral la versiunea umplut pentru că am avut justdone că variația între #8 și # 9:

#11

acum am decis să combin versiunile numai pentru accident vascular cerebral și numai pentru umplere. Am folosit opposingcolors pentru accident vascular cerebral și umplere pentru a obține diferite valori: valorile mai ușoare au un accident vascular cerebral adark cu umplere foarte ușoară, în timp ce valorile mai întunecate au un accident vascular cerebral ușor cu umplere amuch mai închisă:

#12

am continuat să implementez un simplu walker care merge de-a lungul liniei cu schimbări aleatoriiîn poziția sa. Am suprapus o grămadă de acestea pentru a obține următoarea iterație:

#13

apoi am redus dimensiunea pasului la o cantitate foarte mică pentru a obține o mâzgălitură perpendiculară și am desenat doar o singură plimbare de la punctul final la punct cu variații aleatorii bazate pe greutatea cursei specificate:

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Previous post cum Woodforest National Bank îmbunătățește experiența clienților, Gestionarea ATM-urilor și profitabilitatea sucursalelor cu monitorizarea și analiza tranzacțiilor în timp real
Next post care sunt simptomele bolii cronice Lyme?