Matrices et Scale

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
MistaSree
Messages: 3
Enregistré le: 04 Mai 2012, 20:46

Matrices et Scale

par MistaSree » 04 Mai 2012, 22:09

Bonjour!

je suis infographiste3D, …nouveau ici, et j'espère sincèrement... que mon poste est dans la bonne section :)

aujourd’hui, je fais face à un problème d’ordre mathématique, qui dépasse mes compétences...
ça concerne les matrices.
J’essaye d'écrire un script permettant de faire une mise à l'échelle d'un cube d'une valeur de 200% sur l'axe X.

pour le moment j'utilise une de la forme:
MatriceFinale = MatriceCube * MatriceEchelleX
Nb : MatriceEchelleX est créée à partir d’un vecteur, dans cette exemple le vecteur vaut (2,1,1)
Ceci dit, le résultat obtenu, est une mise à l'échelle "locale"
Image
Ce que je cherche à faire (depuis quelques jours maintenant) est une mise à l'échelle "globale"
Comme ceci :
Image
donc, la question, quelle matrice dois-je utiliser afin d’obtenir cette forme de losange?
Merci !



Skullkid
Habitué(e)
Messages: 3075
Enregistré le: 08 Aoû 2007, 19:08

par Skullkid » 04 Mai 2012, 22:18

Bonsoir, est-ce que tu peux préciser ce que représentent tes "MatriceCube" et "MatriceFinale" ? En gros, comment représentes-tu un cube (ou une autre figure) dans ton programme ?

MistaSree
Messages: 3
Enregistré le: 04 Mai 2012, 20:46

par MistaSree » 04 Mai 2012, 22:41

Skullkid a écrit:Bonsoir, est-ce que tu peux préciser ce que représentent tes "MatriceCube" et "MatriceFinale" ? En gros, comment représentes-tu un cube (ou une autre figure) dans ton programme ?

Bonsoir Skullkid
le programme donne accès aux coordonnées traditionnelles c.a.d XYZ pour la position, l'échelle (1,1,1), et la rotation HPB (0,0,0) mais en faisant le script je passe par les matrices. Ce n'est pas une obligation mais je préfère cette option.


la MatriceCube est représentée comme ceci :

Code: Tout sélectionner
| 0.707    0   -0.707    0 |
| 0        1    0        0 |
| 0.707    0    0.707    0 |
| 0        0    0        1 |

elle représente le cube avant modification (enfin, il y a quand même une rotation de 45°)

la MatriceEchelleX :

Code: Tout sélectionner
| 2    0    0    0 |
| 0    1    0    0 |
| 0    0    1    0 |
| 0    0    0    1 |

la MatriceFinale est le résultat du produit des deux précédentes:

Code: Tout sélectionner
| 1.414    0   -0.707    0 |
| 0        1    0        0 |
| 1.414    0    0.707    0 |
| 0        0    0        1 |


cette matrice représente le cube après mise à l'échelle cf. img1

Merci encore :)

Skullkid
Habitué(e)
Messages: 3075
Enregistré le: 08 Aoû 2007, 19:08

par Skullkid » 04 Mai 2012, 23:06

Désolé, j'ai pas été clair, je voulais savoir ce que représentent les coefficients, lignes et colonnes de tes matrices. En gros, comment "lire" tes matrices ? Que représente la première ligne ? Que représente la première colonne (etc) ? Est-ce que toutes tes figures sont représentées par des matrices 4*4 ou est-ce que c'est juste le cas des cubes ? Sur les matrices que tu m'as données en exemple, la 4ème ligne et la 4ème colonne sont toujours 0 0 0 1, est-ce normal ? Puisque les coefficients de tes matrices ont l'air d'être les coordonnées de certains points (lesquels ?), dans quel repère sont prises ces coordonnées ?

Géométriquement, si tu as un repère fixe (donc pas le repère attaché à ton objet qui peut pivoter) dans lequel tu connais les coordonnées x, y et z de chacun des points de ta figure (pour les polyèdres il suffit de connaître les coordonnées des sommets), pour faire un changement d'échelle selon un de ces axes fixes (si j'ai bien compris, c'est ça que tu veux faire), il te suffit de multiplier chacune des coordonnées (toujours dans ce repère fixe) par un facteur adéquat. D'où mes insistantes questions pour connaître exactement les infos que tu as à disposition.

MistaSree
Messages: 3
Enregistré le: 04 Mai 2012, 20:46

par MistaSree » 04 Mai 2012, 23:48

Skullkid a écrit:Désolé, j'ai pas été clair, je voulais savoir ce que représentent les coefficients, lignes et colonnes de tes matrices. En gros, comment "lire" tes matrices ? Que représente la première ligne ? Que représente la première colonne (etc) ? Est-ce que toutes tes figures sont représentées par des matrices 4*4 ou est-ce que c'est juste le cas des cubes ? Sur les matrices que tu m'as données en exemple, la 4ème ligne et la 4ème colonne sont toujours 0 0 0 1, est-ce normal ? Puisque les coefficients de tes matrices ont l'air d'être les coordonnées de certains points (lesquels ?), dans quel repère sont prises ces coordonnées ?

Géométriquement, si tu as un repère fixe (donc pas le repère attaché à ton objet qui peut pivoter) dans lequel tu connais les coordonnées x, y et z de chacun des points de ta figure (pour les polyèdres il suffit de connaître les coordonnées des sommets), pour faire un changement d'échelle selon un de ces axes fixes (si j'ai bien compris, c'est ça que tu veux faire), il te suffit de multiplier chacune des coordonnées (toujours dans ce repère fixe) par un facteur adéquat. D'où mes insistantes questions pour connaître exactement les infos que tu as à disposition.


alors,
par defaut, lors de la creation d'un objet, on obtient toujours (pareil pour tous les objets) une matrice 4*4 comme ceci:

Code: Tout sélectionner
| 1    0    0    0 |
| 0    1    0    0 |
| 0    0    1    0 |
| 0    0    0    1 |


chaque colonne représente un axe ( col 1: axe-X, col2 : axe-Y, col3: axe-Z)
Ces 3 colonnes constituent l'échelle et la rotation de l'objet. la colonne 4, que je n'ai pas encore citée, correspond à la position de l'objet, en gros si je veux placer mon objet à la position (50, 100, 75) , il aura la matrice :


Code: Tout sélectionner
| 1    0    0    50 |
| 0    1    0   100 |
| 0    0    1    75 |
| 0    0    0    1 |


... il te suffit de multiplier chacune des coordonnées (toujours dans ce repère fixe) par un facteur adéquat ...

Edit:
oh Yes! Maintenant que j'y pense c'est tout bête, Skullkid 1000 Merci, grâce à toi je vais bien dormir ce soir :)
en fait, en utilisant la matrice, on obtient une matrice qui correspond au centre de l'objet, et c'est vrai qu'en multipliant les coordonnées de chaque point qui le constitue on tombe bien sur le forme recherchée (j'ai testé seulement avec 2 points, mais je pense que c'est bon)

Merci encore Skullkid ! :ptdr:

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 14 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite