Czesc
Mam za zadanie napisac program, ktory bedzie dokonywal obrotu bitmapy (ma to byc wlasna implementacja). Zadanie chce zrealizowac przy pomocy biblioteki allegro i wyglada to tak ze to dziala tylko jest maly problem. Opisze troche jak to zrobilem.
- Laduje bitmape (jakis plik .bmp)
- Pobieram w petlach (wys x szer) kolor poszczegolych pixeli
- Dokonuje wyznaczenia wspolrzednych piksela po pransformacji i wypelniam go pobranym kolorem.
(wyswietlanie jest realizowane przy uzyciu dodatkowego bufora, aby zapobiec efektowi "rysowania" jaki wystepuje przy rysowaniu pikseli "na żywo")
for (int i=0; i < (img->w); ++i)
for(int j=0; j < (img->h); ++j)
{
// Pobieranie koloru kolejnych pixeli z bitmapy
pixel_color = getpixel(img,i,j);
// Obliczenie nowej współrzędnej x dla danego pixela
pixel_x = i * cos(alfa) - j * sin(alfa);
// Obliczenie nowej współrzędnej y dla danego pixela
pixel_y = i * sin(alfa) + j * cos(alfa);
// Wyświetlenie przesuniętego pixela
putpixel( buffer,
pixel_x + x1,
pixel_y + y1,
pixel_color
);
}
Problem polega na tym ze podczas obrotu o kolejny kąt obrazek jest poprawnie obrocony tylko wystepuja tak jakby "dziury" w bitmapie - "przezroczyste piksele" prawdopodobnie spowodowane bledami zaokraglenia, jesli ktos wie jak sobie z tmy poradzic to prosze o sugestie :)). Dzieki