Składnia
#include <allegro.h>
void rotate_sprite( BITMAP * bufor, BITMAP * sprajt, int x, int y, fixed kat );
Argumenty
Opis szczegółowy
Funkcja rysuje bitmapę źródłową, obróconą o podany kąt na bitmapie docelowej. Argumenty
x oraz
y określają położenie bitmapy źródłowej na bitmapie docelowej uwzględnieniem obrotu. Obrót bitmapy źródłowej odbywa się wokół centralnego punktu bitmapy przy czym bitmapa źródłowa podczas tej operacji nie ulega modyfikacji.
Dodatkowe informacje
Kąt jest wyrażony poprzez liczbę zmiennoprzecinkową, w której wartość kąta 256 oznacza obrót o 360 stopni. W praktyce oznacza to, że wykonanie obrotu o podany kąt sprowadza się do wykonania obliczeń:
double ile_stopni = 290;
fixed kat_obrotu =( ile_stopni * 256 ) / 360.0;
Pomimo, iż obliczenia można wykonać samodzielnie to zaleca się jednak mimo wszystko używania funkcji dostarczonych z biblioteką allegro tj.
itofix bądź
ftofix, które konwertują wartość kąta wyrażonego w stopniach na zapis liczbowy stosowany przez funkcje allegro.
Przykład
#include <allegro.h>
int main()
{
allegro_init();
install_keyboard();
set_color_depth( 16 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
install_timer();
BITMAP * bufor = create_bitmap( 640, 480 );
if( !bufor )
{
allegro_exit();
return 0;
}
BITMAP * obrazek = load_bmp( "obrazek.bmp", default_palette );
float kat = 0;
while( !key[ KEY_ESC ] )
{
kat += 0.2;
clear_to_color( bufor, makecol( 0, 0, 0 ) );
rotate_sprite( bufor, obrazek, 100, 100, ftofix( kat ) );
blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
}
destroy_bitmap( obrazek );
destroy_bitmap( bufor );
allegro_exit();
return 0;
}
END_OF_MAIN();
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.