algorytm do obrazów wektorowych

1

w jaki sposób tworzy się obraz wektorowy? za pomocą przekształceń wykresu funkcji(???) jeśli chodzi o rysowanie, to znalazłem coś takiego jak Brehensen's algorithms, ale samo tworzenie i zapisanie tego w pamięci? jak się za to zabrać? chcę spróbować napisać własny programik do rysowania grafiki wektorowej. niechcący wrzuciłem do niewłaściwej kategorii forum

0

Powoli, powoli - wiesz czym różni się grafika rastrowa od wektorowej?

0

tak wiem, rastrowa to pixele, wektorowa to obiekty opisane przy pomocy krzywych, i kształtów, ogólnie za pomocą wzorów matematycznych, i szukam jakiejś informacji o algorytmach na te kształty. W jaki sposób się to przedstawia, jak się robi przekształcenia na obiektach?

1

Nie ma żadnych specjalnych "algorytmów na kształty", bo i jest to zbyt szerokie pojęcie :-)

Odkryłeś już algorytm Bresenhama, który pozwala rysować linie - oznacza to, że z jego wykorzystaniem możesz narysować np. trójkąt, kwadrat czy dowolny inny wybrany przez Ciebie wielokąt.

Mając to na uwadze, spróbuj napisać aplikację, która narysuje niebieską linię na żółtym tle i zapisze obraz do najzwyklejszej bitmapy (już rastrowej!) o wymiarach 100x100 - na moje oko całość (bez wykorzystania żadnych dodatkowych bibliotek) powinna zmieścić się poniżej 300 linijek kodu, czyli akurat takie zadanie na jeden dzień.

W internecie znajdziesz opis formatu BMP, a same bitmapy (dla zobaczenia rezultatu) będziesz w stanie otworzyć czymkolwiek wbudowanym w Twój system :-)

Gdy już skończysz, możesz zacząć rozbudowywać program - niech np. potrafi wczytywać figury z pliku (niekoniecznie od razu SVG - niech będzie to jakiś Twój najprostszy wymyślony format tekstowy), rysować krzywe (https://pl.wikipedia.org/wiki/Krzywa_B-sklejana), dokonywać translacji (obrotów itd.) czy robić cokolwiek innego, co uznasz za przydatne.

Nie ma tutaj żadnego haczyka - póki nie dojdziesz do krzywych czy renderowania trójwymiarowego, nie będziesz potrzebował żadnej wiedzy o wektorach, macierzach czy perspektywach, nie będziesz też potrzebował żadnych magicznych bibliotek (ponad to, co oferuje standardowy C++).

1

to naprawdę smutne, że dzisiaj mając gotowy algorytm, implementację i szeroki dostęp do tony info w necie pytacz nie potrafi tego zastosować. Tak teraz patrzę na ten algorytm Bresenhama i właśnie dotarło do mnie, że ja to samo wymyślałem sam jakieś 25 lat temu (o internecie nikt nie słyszał) mając Commodore C64 do dyspozycji żeby sobie dowolny odcinek narysować. Mogłem być wtedy może w 5-6 klasie podstawówki bo potem się PC XT i 386 pojawiły...

0

źle sprecyzowałem o co mi chodzi, mój błąd, już wyjaśniam
chodziło mi tylko o tworzenie kształtów za pomocą krzywych :/ nie zajmowałem się samą grafiką wektorową jako samą w sobie na poważnie, tylko się bawiłem, ale w jednym programie do tworzenia animacji , na free trialu przekształciłem koło w coś takiego i wyszła z tego animacja, coś mi zaświeciło w głowie że taki sam mechanizm jest w grafice wektorowej :D
to otrzymałem z koła:
screenshot-20190413194339.png
Chciałem napisać własny programik do edycji kształtów w ten właśnie sposób. dokładnie chodziło mi o to przekształcanie podstawowych kształtów w bardziej zaawansowane(i być może zrobić program do tworzenia prostych animacji w ten sposób). a może jest jakieś źródło od którego mógłbym zacząć naukę? potrzebuję jakiegoś punktu zaczepienia / cokolwiek co by naświetliło by mi w jaki sposób się to robi. mi przychodzi do głowy jedynie przekształcanie wykresów funkcji ale na razie nie widzę jak to tu zastosować

zerknąłem do programu do grafiki wektorowej,po kilku latach - chyba coś źle zapamiętałem bo zdawało mi się nie wiem czemu że właśnie przez obróbkę podstawowych kształtów robi się grafikę wektorową, przesunąć ramię gwiazdki to ja umiem ale wstawić wklęsłą krzywą do okręgu już nie - i jak na razie nie znalazłem narzędzia do czegoś takiego(w programie do graf. wektorowej), a tylko podstawowe kształty (zdziwienie).
Może jednak nie wiem do końca co to grafika wektorowa :D

0

Jeśli Windows, to poczytaj sobie o GDI+. Jeśli coś bardziej multiplatformowego, to np. biblioteka Cairo.

0

Chciałem napisać własny programik do edycji kształtów w ten właśnie sposób. dokładnie chodziło mi o to przekształcanie podstawowych kształtów w bardziej zaawansowane(i być może zrobić program do tworzenia prostych animacji w ten sposób).

krzywe Beziera może? (tak luźno rzucam słowo-hasło, nie wiem jednak jak to dokładnie można zaimplementować, ale w programach graficznych masz czasami tak, że np. okrąg czy inny podstawowy kształt może być skonwertowany do krzywej Beziera, i potem już sobie manipulujesz tym).

1 użytkowników online, w tym zalogowanych: 0, gości: 1