Rotation d'une surface

Présentation
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.

Téléchargement
Compatibilité
Windows
1  1 
Téléchargé 11 fois Voir les 4 commentaires
Détails
Catégories : Graphismes
Avatar de millie
Rédacteur
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 21 décembre 2010




Avatar de millie 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 hbx360 - Membre régulier 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 hbx360 - Membre régulier https://www.developpez.com
le 20/10/2016 à 18:52
Ok merci pour le conseil
Avatar de Luke spywoker 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.