rozciąganie grafiki

Odpowiedz Nowy wątek
2006-10-22 02:24

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

0

Potrzebuję napisać następujący program:
Są dwie zmienne typu bitmap. Do jednej jest wczytany obraz lub zdjęcie, a druga jest pusta. Podaje się dowolne współrzędne wszystkich czterech narożników bitmapy. Nie musi to być prostokąt, może to być równoległobok, trapez lub nawet trapezoid. Na drugiej bitmapie program rysuje kształt uzyskany pomiędzy tymi czterema punktami, a w nim rozciągniętą bitmapę.

Przykład wczytywanego obrazka:
http://img82.imageshack.us/img82/169/oryginaliz8.png

Ten sam obrazek obrobiony:
http://img208.imageshack.us/img208/1738/obrobionydo9.png

Jak napisać taką procedurę?

Pozostało 580 znaków

2006-10-22 13:59

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

To nic innego jak zwykłe nakładanie tekstury na QUAD'ach

dodam jeszcze że stosuje się w tym celu interpolacje liniową ( i dobrze jest skorzystać z bilinealnego rozmycia )


Nie ma ludzi zdrowych psychicznie, są tylko źle zbadani...

Pozostało 580 znaków

2006-10-22 17:54

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

0

Jednak chodzi mi o grafikę 2D, a nie 3D. Niektóre programy graficzne, np. Photoshop potrafią tak przerobić bitmapę.

Pozostało 580 znaków

2006-10-22 22:40

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0
andrzejlisek napisał(a)

Jednak chodzi mi o grafikę 2D, a nie 3D. Niektóre programy graficzne, np. Photoshop potrafią tak przerobić bitmapę.

Nakładanie tekstur odbywa się w grafice 2D! Wystarczy ze poczytasz o tym algorytmie i już będziesz wiedział o co chodzi.


Nie ma ludzi zdrowych psychicznie, są tylko źle zbadani...

Pozostało 580 znaków

2006-10-23 00:56

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

0

Tylko jak się ten algorytm nazywa? Chodzi o to, co wpisywać w Google.

Pozostało 580 znaków

dj
2006-10-23 16:15
dj

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

Jak nie chcesz kombinować i mieć sporo dodatkowych opcji to możesz to narysować w OpenGL'u
a puźniej zczytać to do bitmapy.

Ale uprzedzam że możesz stracić na szybkości, tworzenie tekstury trochę trwa.

A tak poza tym to chyba lepszego(szybszego) rozwiązania nie ma.
(No chyba że jakaś gotowa biblioteczka)

Pozdrawiam


Great spirits have always encountered violent opposition from mediocre minds.

Pozostało 580 znaków

2006-10-23 17:48

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

przeczytaj sobie to :
Programowanie 3D cz. III

najważniejsza jest część o gouraund, ponieważ teksturowanie działa identycznie, z tym że zamiast c1 mamy u1, v1, zamiast g2 mamy u2,v2 i analogicznie dla 3.
i teraz w procedurze rysującej linię wpisujesz punkt o kolorze zrodlo [ u, v ].
u,v <- to są koordynaty tekstury.
czyli u2,v2 to nic innego jak współrzędne teksela (piksela obrazka źródłowego ) dla wierzchołka trójkąta o numerze 2 :P
Miałem kiedyś to opisać ale niestety zabrakło czasu :]

Żeby to ładnie wyglądało to powinieneś dodać jeszcze bilinealne filtrowanie i dobrze byłoby zastosować korekcje perspektywy. Btw. mogę zamieścić źródło procedurki teksturowania + bilinealne filtrowanie ale w C


Nie ma ludzi zdrowych psychicznie, są tylko źle zbadani...

Pozostało 580 znaków

Odpowiedz

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