IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 2 fois
Vote des utilisateurs
1 
1 
Détails
Licence : Non renseignée
Mise en ligne le 21 décembre 2010
Plate-forme : Windows
Langue : Français
Référencé dans
Navigation

Rotation d'une surface

Code source montrant comment faire des rotations d'une surface. Ce code propose deux fonctions qui calculent la rotation d'une surface. Une fonction recalculant la taille de la surface pour ne pas perdre d'information. Les deux fonctions allouent une nouvelle surface, il faudra s'occuper de la libération de mémoire. Voici les prototypes des deux fonctions :

//Ne recalcule pas la taille, les bords seront perdus
SDL_Surface* SDL_RotationCentral(SDL_Surface* origine, float angle);
//Calcule la taille de la surface, les bords ne seront pas perdus
SDL_Surface* SDL_RotationCentralN(SDL_Surface* origine, float angle);

Dernière remarque :

  • Il faut noter que l'on parcourt la surface de destination et non la surface d'origine pour forcer chaque pixel de destination a avoir une couleur à peu près correct (à peu près comme une rotation en informatique est dans la plupart des cas non bijective). Alors que si l'on parcourait les pixels de la surface d'origine et on déterminait sa nouvelle position, il pourrait y avoir des trous noirs dans la surface de destination.

Avatar de millie
Rédacteur https://www.developpez.com
Le 21/12/2010 à 15:11
Bonjour, Je vous propose un nouvel élément à utiliser : Rotation d'une surface

Code source montrant comment faire des rotations d'une surface. Ce code propose deux fonctions qui calculent la rotation d'une surface. Une fonction recalculant la taille de la surface pour ne pas perdre d'information. Les deux fonctions allouent une nouvelle surface, il faudra s'occuper de la libération de mémoire. Voici les prototypes des deux fonctions :

//Ne recalcule pas la taille, les bords seront perdus

SDL_Surface* SDL_RotationCentral(SDL_Surface* origine, float angle);

//Calcule la taille de la surface, les bords ne seront pas perdus

SDL_Surface* SDL_RotationCentralN(SDL_Surface* origine, float angle);

Dernière remarque :

  • Il faut noter que l'on parcourt la surface de destination et non la surface d'origine pour forcer chaque pixel de destination a avoir une couleur à peu près correct (à peu près comme une rotation en informatique est dans la plupart des cas non bijective). Alors que si l'on parcourait les pixels de la surface d'origine et on déterminait sa nouvelle position, il pourrait y avoir des trous noirs dans la surface de destination.


Qu'en pensez-vous ?
Avatar de hbx360
Membre habitué https://www.developpez.com
Le 19/10/2016 à 18:46
Merci pour ton code serait-il possible de faire un exemple (voir une image en rotation avec sdl)
Avatar de hbx360
Membre habitué https://www.developpez.com
Le 20/10/2016 à 18:52
Ok merci pour le conseil
Avatar de Luke spywoker
Membre expérimenté https://www.developpez.com
Le 21/10/2016 à 2:25
Salut tout le monde,

et salut kannagi, j'interviens dans cette discussion car j'ai essayer pour mon jeu battle-rage qui est pre-release de faire un masque des combattants pour soustraire le nombre de points de vie car mes images de fighters contiennent des pixels transparents.

J'ai réussis a faire les masques: des pixels noires qui sont placés là ou est le fighter. Donc un fighter en noir et transparent.

Mais là ou je n'ai pas pus c'est comparez les masques: ça prends trop de temps de calcule de comparé pixel par pixel.

Sinon le jeux prends en compte la largeur de pénétration de l'image du fighter au lieu du masque, dommage !
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.