Obracanie obrazów , problem z dużymi kątami !
Ostatnio zmodyfikowano 2009-12-26 10:47
kamillo121 Temat założony przez niniejszego użytkownika |
Obracanie obrazów , problem z dużymi kątami ! » 2009-12-25 20:11:55 Witam , otóż próbuję napisać sobie program do obracania (narazie ) małych tekstur i oczywiście jak najprostszym sposobem . A więc najpierw przedstawię kod :
radian=(90*M_PI)/180.0; //narazie tak na sztywno stopień
x=Xf*cos(radian)-Yf*sin(radian); y=Xf*sin(radian)+Yf*cos(radian);
rysujPixel(screen,(int)x,(int)y,kolor);
no i tak działa , obróci ładnie teksturę (przy 90 stopniach bez utraty jakości xD) ale gdy zmienię stopnie na 100*M_PI.. albo więcej to program się wykracza i od razu wyłącza, chyba że Xf i Yf będzie równa 1 .
Czemu tak się dzieje ? wyświetlałem sobie tak na sucho wyniki i nie różnią się wiele (mają po parę liczb po przecinku )więc czemu to nie działa ? |
|
malan |
» 2009-12-25 21:47:50 A sprawdzałeś co się stanie kiedy x lub y == (np.) -1 ? |
|
kamillo121 Temat założony przez niniejszego użytkownika |
» 2009-12-25 22:12:27 Program odpali , ale nic nie narysuje (jak x zmienie na -1 albo 1 to nie odpali ) |
|
malan |
» 2009-12-25 22:30:39 Hmmm..., to może spróbuj rysować to nie na ekranie (screen) tylko na buforze. Stwórz bufor, rysuj na buforze, bufor wyświetlaj na ekran. |
|
DejaVu |
» 2009-12-26 00:50:58 Nie obracaj tekstur za pomocą własnej funkcji tylko funkcji allegro (jeśli jego używasz). Ona zrobi to znacznie lepiej niż Twój algorytm i będzie prawdopodobnie wydajniejsze. Wzory, które przedstawiłeś są dobre do nadawania kierunku obiektom punktów materialnych itp., ale do obrotu tekstutry o dany kąt wykorzystaj już funkcję wbudowaną. Efekt będzie uzyskany dużo prościej i lepiej będzie działał.
/edit: A co do wykrzaczania to pewnie dzieje się dlatego, że piszesz poza buforem, np. na ujemne indeksy, co w konsekwencji program wysadza w powietrze (GPF). |
|
kamillo121 Temat założony przez niniejszego użytkownika |
» 2009-12-26 10:47:26 Dzięki , tak tylko chciałem sprawdzić co za pomocą tych wzorów uzyskam ;] czytałem, że SDL_gfx ma chyba funkcje do obracania więc ją wypróbuje . |
|
« 1 » |