IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel 08 - Transformations

Mise à l'échelle

Nous allons ici étudier la dernière transformation de base : la mise à l'échelle (scaling).

Commentez Donner une note à l´article (5)

Article lu   fois.

Les deux auteur et traducteur

Site personnel

Traducteur : Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Navigation

Tutoriel précédent : les rotations   Sommaire   Tutoriel suivant : interpolation

II. Contexte

La transformation d'échelle est très simple. Son but est d'augmenter ou réduire la taille de l'objet. Par exemple, vous pouvez vouloir créer une différenciation entre plusieurs objets avec le même modèle (des arbres de taille différente) ou faire correspondre la taille d'un objet avec celle du monde.

Pour les exemples ci-dessus, vous voudrez certainement mettre à l'échelle les positions des sommets pour les trois axes uniformément.

Cependant dans d'autres cas vous voudrez peut-être mettre à l'échelle seulement un ou deux axes, rendant le modèle plus gros ou plus mince.

Le développement de la matrice de transformation est très animé…

Rappelons-nous qu'avec la matrice identité, la raison pour laquelle la multiplication d'un vecteur le laisse inchangé est que chacun des 1 de la diagonale est multiplié par la composante correspondante du vecteur.

Aucune composante ne peut en affecter une autre. Ainsi, remplacer n'importe lequel de ces 1 par une autre valeur impliquera une augmentation sur cet axe, si la valeur est supérieure à 1 ou une diminution sur cet axe sinon.

III. Explication du code

 
Sélectionnez
World.m[0][0]=sinf(Scale);
World.m[0][1]=0.0f;
World.m[0][2]=0.0f;
World.m[0][3]=0.0f;
World.m[1][0]=0.0f;
World.m[1][1]=sinf(Scale);
World.m[1][2]=0.0f;
World.m[1][3]=0.0f;
World.m[2][0]=0.0f;
World.m[2][1]=0.0f;
World.m[2][2]=sinf(Scale);
World.m[2][3]=0.0f;
World.m[3][0]=0.0f;
World.m[3][1]=0.0f;
World.m[3][2]=0.0f;
World.m[3][3]=1.0f;

Le seul changement depuis le tutoriel précédent est que nous remplaçons la matrice monde en concordance avec l'explication ci-dessus.

Comme vous pouvez le voir, nous effectuons la mise à l'échelle sur les trois axes avec une valeur oscillant entre -1 et 1.

Dans l'ensemble de valeurs [0, 1] la taille du triangle est entre « toute petite » et « taille originale », et quand la diagonale vaut zéro il disparaît entièrement.

Entre les bornes [-1, 0], c'est le résultat inverse, car la valeur d'échelle dans la diagonale a changé le signe de la position.

Image non disponible
Résultat

IV. Sources

Vous pouvez télécharger les sources de ce projet en suivant ce lien :

Récupérer les sources

V. Remerciements

Merci à Etay Meiri de nous permettre de traduire son tutoriel.

Merci à LittleWhite pour ses corrections et à jacques_jean pour sa relecture.

Navigation

Tutoriel précédent : les rotations   Sommaire   Tutoriel suivant : interpolation

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Etay Meiri. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.