piętnaście sposobów na narysowanie linii

Udostępnij tę stronę
Twitter Facebook Google+

cały kod przetwarzania tego artykułu, wraz z obrazami, można znaleźć na Github

na początku ubiegłego roku rzuciłem wyzwanie, aby wymyślić dwadzieścia pięć projektów za pomocą pól przepływu onlyPerlin i podążył za tym siedemdziesiąt pięć różnych sposobów na narysowanie linii. circle.In w tym artykule zgłębiam kolejne proste wyzwanie: piętnaście różnych sposobów rysowania ciekawych linii.

ograniczenia

ustawiłem trzy ograniczenia dla tego wyzwania. Tak jak wcześniej, moim pierwszym ograniczeniem było zaprzestanie używania kolorów, aby móc skupić się na formach i kształtach.

po drugie, każda wersja powinna być zaimplementowana jako niezależna funkcja wielokrotnego użytku zgodna z następującą deklaracją:

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) */}

w ten sposób mogę z łatwością wykorzystać je później do innych prac. Powyżej zobaczysz, że jest to określenie dwóch dodatkowych parametrów: wagi obrysu i wartości (lub jasności/ciemności).

jako trzecie i ostatnie ograniczenie, każda wersja musiała mieć jakiś komponent / proces. Oznacza to,że za każdym razem, gdy funkcja jest wywoływana, powinien być generowany nowy wariant.

dość gadania. Oto wyniki! Smacznego!

piętnaście linii

zacząłem od podstawowego formatowania różnych wag i wartości, których szukałem i poszedłem z najprostszą możliwą linią. Poniżej masa skoku zwiększa się od lewej do prawej, a wartości stają się lżejsze od góry do dołu:

#1

moim następnym impulsem było uformowanie grubości linii z wielu cieńszych linii. Końcówka linii może być postrzegana jako okrąg o średnicy określonej przez weight.Wygenerowałem losowy punkt wewnątrz okręgu wokół pierwszego punktu końcowego i drugiego wokół drugiego i połączyłem je linią, której kolor jest oparty na określonej wartości:

#2

zamiast rysować kompletne linie, zamiast tego próbkowałem kilka punktów na linii i narysowałem małe elipsy (z wymaganym kryciem, aby uzyskać poprawną wartość):

#3

Chciałem Spróbować i zobaczyć, czy mogę użyć solidnego czarnego wypełnienia dla elipsy i wartości zmiennej, używając tylko gęstości samego próbkowania, i wydaje się, że działa dość dobrze:

#4

postanowiłem nieco zmienić bieg i po wygenerowaniu kilku losowych punktów wewnątrz kształtu linii, stworzyłem diagram Delaunaya (wykorzystując do obróbki fantastyczną bibliotekę siatki Lee Byrona. Wartość została określona przez lekkość linii:

#5

ponieważ i tak korzystałem z biblioteki Mesh, pomyślałem, że spróbuję również zrobić tylko wypukły kadłub losowo generowanych punktów. Daje to ciekawy kształt pędzla:

#6

w tym momencie Chciałem Spróbować wariacji poprzedniego szkicu: zamiast generować linie kończące się w pobliżu punktów końcowych naszej linii, chciałem je wygenerować gdziekolwiek w kształcie linii. Wynik był subtelnie inny, ale różnica nie była szczególnie dostrzegalna:

#7

ponieważ i tak generowałem losowe punkty wzdłuż kształtu linii, pomyślałem, że zamiast tego narysuję kilka elips. Używam losowych średnic w oparciu o określoną wagę, ale jest to pierwsza, w której zaczynam rysować poza granicami oryginalnego kształtu:

#8

w następnym usunąłem wypełnienie i użyłem tylko cienkiego obrysu konturu. WSKAZÓWKA: Możesz określić ułamkowe masy udaru w przetwarzaniu, aby uzyskać cieńsze linie (np. strokeWeight(0.5))

#9

zamiast generować elipsy o losowych położeniach i średnicach, postanowiłem wygenerować je na oryginalnej linii o losowej średnicy do określonej wagi skoku:

#10

tym razem przeszedłem z wersji tylko na udar do wersji wypełnionej, ponieważ właśnie zrobiłem tę odmianę między #8 a # 9:

#11

teraz postanowiłem połączyć wersje stroke-only I fill-only. Użyłem opposingcolors dla obrysu i wypełnienia, aby uzyskać różne wartości: jaśniejsze wartości mają wyraźny obrys z bardzo jasnym wypełnieniem, podczas gdy ciemniejsze wartości mają jasny obrys z bardzo ciemniejszym wypełnieniem:

#12

przeszedłem do wdrożenia prosty walker, który chodzi wzdłuż linii z przypadkowych przesunięć w jego pozycji. Nałożyłem kilka z nich, aby uzyskać następną iterację:

#13

następnie zmniejszyłem rozmiar kroku do bardzo małej ilości, aby uzyskać prostopadłe bazgroły i narysowałem tylko jeden spacer od punktu końcowego do punktu końcowego z losowymi wariacjami w oparciu o określoną wagę skoku:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post jak Woodforest National Bank poprawia obsługę klientów, Zarządzanie bankomatami i rentowność oddziałów dzięki monitorowaniu i analityce transakcji w czasie rzeczywistym
Next post jakie są objawy przewlekłej boreliozy?