J'utilise XNA mais peu importe pour cet exemple. Alors disons que j'ai un sprite. J'applique ensuite une matrice d'échelle avant tout. La matrice de mise à l'échelle est-elle mise à l'échelle de l'axe local de l'image-objet ou simplement déplacée vers le bas? En d'autres termes, est-ce que j'applique une matrice d'échelle de 0.5f dans l'espace du monde à mon sprite à l'origine du monde en redimensionnant l'axe local du sprite ou juste tous les points qui composent ce sprite de moitié?Comment voir les matrices de mise à l'échelle d'un point de vue géométrique
Le même genre s'applique à une traduction, puis à une mise à l'échelle. Dans ma tête, j'imagine une matrice de traduction de 30,30 en déplaçant l'origine locale de l'image-objet à 30,30 et, par conséquent, l'axe local de l'image-objet à 30,30. Ensuite, la mise à l'échelle de 0.5f redimensionnerait l'axe local, mais je ne vois pas pourquoi l'origine de l'image-objet serait maintenant de 15,15. Cette confusion aggrave le fait que vous effectuez une translation de 1 vers la droite sur l'axe des x dans le monde, vous vous déplacez maintenant en fonction de l'échelle que vous avez appliquée (donc vous ne bougeriez que 0,5 dans le monde). Cela m'amène à croire que l'échelle est appliquée à l'axe propre de l'objet. Btw, si vous parlez de l'origine de vos suivis, pourriez-vous indiquer de quelle origine vous parlez?
Merci
Je pense que je l'obtiens maintenant si j'y pense d'une certaine manière. Au début, mes axes local et mondial sont les mêmes, donc une traduction dans la direction x de 1 est une traduction de 1 puisque l'espace mondial et l'espace local sont de la même échelle. L'application d'une échelle de 0.5f réduit essentiellement la largeur en pixels de mon espace local, ainsi les points sont rétrécis et le résultat des coordonnées du monde est une coordonnée qui est coupée en deux. Maintenant, si je devais traduire ce sprite, il se produit une translation le long de l'axe redimensionné de l'espace local et nous pouvons identifier les coordonnées du monde. – Ilya
La dernière phrase ne sonne pas bien. Dans votre question, vous parlez de traduire puis de mettre à l'échelle le sprite. Ici vous parlez de mise à l'échelle puis de traduction. Ce sont deux opérations très différentes. Si vous mettez à l'échelle (0.5) puis traduisez (30, 30), vous vous retrouvez avec un sprite de la moitié de la taille au point (30, 30). Si vous traduisez (30, 30) puis redimensionnez (0.5), vous obtenez un sprite de la moitié de la taille au point (15, 15). Le point est que l'échelle fonctionne toujours à partir du point (0, 0). Si le centre de l'image-objet n'est pas à (0, 0) lorsque vous faites l'échelle, il s'agira d'une échelle décentrée. – Empyrean