-
Data: 2012-03-30 19:59:34
Temat: Re: reczne rotowanie bitmap
Od: " " <f...@g...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]<f...@g...pl> napisał(a):
> bartekltg <b...@g...com> napisał(a):
>
> > W dniu 2012-03-30 18:27, f...@g...pl pisze:
> >
> > >>
> > > nie tak samo szybkie tylko tak samo wolne (zobacz jak to dziala pod
> >
> > No widzisz, pozbÄdziesz siÄ artefaktĂłw a szybkoĹÄ (ktĂłrÄ jak
> > naprawiÄ teĹź mĂłwiĹem) pozostanie osobnym problemem.
> >
> > > linkiem wyzej) - pod drugim linikiem jest dyskusja nt czegos co
> > > w demoscenie nazywa sie rotozoomer - bede musiec sie troche
> > > pomeczyc i zobaczyc czy uda mi sie to zmusic do dzialania
> >
> > ZerknÄ Ĺem. RobiÄ tak jak mĂłwiĹem:
> >
> > "
> > ARGB_Img1[ti] = ARGB_Img0[(y0>>10)*ImW+(x0>>10)];
> > "
> >
> > ti to "iterator" jadÄ cy po obrazku odcelowym.
> > Obliczane wspolrzÄdny y0 i x0 na obrazie-ĹşrĂłdle
> > uaktualniane sÄ przez dodawanie i trzymane jako staĹy przecinek.
> >
> >
>
> to albo niezbyt wyraznie albo jednak nie o tym, bo to nie
> jest po prostu transformacja na cos sin /-sin cos tylko w druga
> strone -
>
> tutaj sie transformuje tylko narozne punkty i liczy proste dx dy ,
>
> chyba bedzie dzialac bo
>
> float dxdx = (Bx-Ax)/200.0,
> dydx = (By-Ay)/200.0,
> dxdy = (Cx-Ax)/200.0,
> dydy = (Cy-Ay)/200.0;
>
> long offs = 0;
>
> // loop for all lines
>
> for (int j=0; j<200; j++)
> {
> Cx = Ax;
> Cy = Ay;
> // for each pixel
> for (int i=0; i<200; i++)
> {
>
> unsigned color = sprites_buf_[(int)Cy][(int)Cx];
>
> int adr = ((50+j)*CLIENT_X+i+50);
>
> ((unsigned*)pBits)[adr] = color;
>
> // interpolate to get next texel in texture space
> Cx += dxdx;
> Cy += dydx;
> }
> // interpolate to get start of next line in texture space
> Ax += dxdy;
> Ay += dydy;
> }
> }
>
> zaczyna mi dzialac - co prawda tylko na floatach a w oryginale jest
> na intach (na intach nie chialo zadzialac a nie petrzylem wiecej)
> i bede sie musiec nabiedzic nad tym ze ja mam podwojna
> translacje-rotacje a nie tylko pojedyncza (z lekka mnie glowa
> rozbolala wiec moze jutro) - ale chyba powinno dzialac i raczej
> powinno byc zbacznie szybciej przez te dx/dy
>
>
>
czyli (?) -
musze przepuscic (logiczne) rogi
sprite'a przez oryginalna (podwojna)
transformacje (na sinusach) -
- bede miec wierzcholki A B C w
koordynatach fiz - sprawdzic czy
to lezy w zakresie widzialnym -
jesli tak policzyc dxdx dydx dydx
dydy
nie do konca rozumiem jedna
rzecz - powiedzmy ze przepuszcze
logiczne rogi sprite'a przez swoja
pierwotna zlozona transformacje -
dostane koordynaty fizyczne tych
rogow
dxdx, dydx, dxdy, dydy
rozumiem jako
dx(logiczne)/dx(fizyczne)
dy(logiczne)/dx(fizyczne)
dx(logiczne)/dy(fizyczne)
dy(logiczne)/dy(fizyczne)
mimo ze sama transformacja jest
skomplikowana (uwzglednia dwa
obroty i translacje) to samo
dxdx dydx dxdy dydy mozna obliczyc
z prostego wzorku
dxdx = (Bx(log)-Ax(log))/(Bx(fiz)-Ax(fiz)); (?)
pewnie dzieki temu ze ta transformacja jest liniowa
trzeba wtedy w podwojnym for()
przeiterowac blok po j,i
i siegac do tekstury przy pomocy
logicznych dxdx dydx dxdy dydy
(nie wiem czy ze rozumowanie
do tego momentu jest poprawne
bo sam kawalek kodu tego rotozooma
to nie calkiem pokazuje)
- jak wtedy ustalic zakresy j,i
- mozna ew zaczac od fizycznego
srodka i iteroeac od minus polowy
przekatnej do plus polowy
przekatnej na obu indeksach
- (nie wiem czy tamten kawalek
kodu jest uproszczony bo chyba tak
bo tam nic o tym nie ma, jest tylko
iterowanie po bloku rozmiaru
sprita) czy ew jest jakas sztuczka
ktora dobralaby ten obszar dla forów
automatycznie?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 30.03.12 21:23 Michoo
- 30.03.12 21:26 Michoo
- 31.03.12 01:12
- 31.03.12 08:25
- 31.03.12 09:33
- 31.03.12 11:08 yamma
- 31.03.12 11:58 M.M.
- 31.03.12 12:03 Marcin Biegan
- 31.03.12 12:45 M.M.
- 31.03.12 13:54
- 31.03.12 14:04 bartekltg
- 31.03.12 14:14 bartekltg
- 31.03.12 14:18 bartekltg
- 31.03.12 14:19 Sebastian Biały
- 31.03.12 14:21 bartekltg
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-27 Chiński elektrolizer tester wody
- 2024-12-27 Rzeszów => System Architect (background deweloperski w Java) <=
- 2024-12-27 Kraków => Application Security Engineer <=
- 2024-12-27 Gorzów Wielkopolski => Konsultant wdrożeniowy Comarch XL/Optima (Ksi
- 2024-12-27 Wrocław => Solution Architect (Java background) <=
- 2024-12-27 kladka Zagorze
- 2024-12-27 Poznań => Key Account Manager (ERP) <=
- 2024-12-27 Gdańsk => Full Stack .Net Engineer <=
- 2024-12-27 Katowice => Programista Full Stack .Net <=
- 2024-12-27 Opole => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-27 Gdańsk => Delphi Programmer <=
- 2024-12-27 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-27 zasniecie
- 2024-12-27 Kraków => Key Account Manager <=
- 2024-12-26 zapora Zagorze