Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: McAffey
Udoskonalił: Piotr DejaVu Szawdyński
Biblioteki C/C++

rotate_sprite

[funkcja] Rysuje bitmapę źródłową, obróconą o podany kąt na bitmapie docelowej.

Składnia

C/C++
#include <allegro.h>

void rotate_sprite( BITMAP * bufor, BITMAP * sprajt, int x, int y, fixed kat );

Argumenty

ArgumentOpis
BITMAP* buforBitmapa docelowa na którą ma zostać przekopiowany obraz z bitmapy źródłowej.
BITMAP* sprajtBitmapa źródłowa, która ma zostać przekopiowana do bitmapy docelowej.
int xWspółrzędna lewej krawędzi bitmapy na której ma zostać umieszczona bitmapa źródłowa.
int yWspółrzędna górnej krawędzi bitmapy na której ma zostać umieszczona bitmapa źródłowa.
fixed katKąt o jaki ma być obrócona bitmapa źródłowa na bitmapie docelowej. Patrz sekcja Dodatkowe informacje.

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ń:
C/C++
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

C/C++
#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 ) ); //Przykład użycia funkcji rotate_sprite
        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