GdipVectorTransformMatrixPoints()



Syntaxe
Resultat.i = GdipVectorTransformMatrixPoints(*matrix, @pts.PointF, count.l)
Paramètres
*matrix

[in] Pointeur sur un objet Matrix.

pts.PointF

[in, out] Tableau de type PointF (nombres flottants) contenant les vecteurs à transformer et qui recevra les vecteurs modifiés. Chaque vecteur est transformé (multiplié par la matrice) et mis à jour avec le résultat de la transformation. La translation est ignorée (application de la mise à l'échelle et de la rotation uniquement).

count.l

[in] Nombre entier positif qui spécifie le nombre de vecteurs à transformer.

Description
Cette fonction permet de multiplier chaque vecteur du tableau par la matrice *matrix. La translation définie par la troisième ligne de la matrice est ignorée. Seules la mise à l'échelle et de la rotation sont appliquées.
Chaque vecteur est traité comme une ligne de matrice.
La multiplication est effectuée avec la matrice définie par le tableau du côté gauche et la matrice *matrix du côté droit (la multiplication des matrices n'est pas commutative).

Cette fonction utilise un tableau de nombres flottants alors que la fonction GdipVectorTransformMatrixPointsI() utilise un tableau de nombres de type long.

Remarque de Microsoft :
Alors qu'un point représente une position, un vecteur représente une entité (par exemple la vitesse ou l'accélération) qui a une direction et une grandeur. Ainsi, les extrémités d'un segment sont des points, mais la différence est qu'ils représentent un vecteur - la longueur et la direction de ce segment. Les vecteurs sont semblables aux points de plusieurs manières. Comme les points, ils sont représentés par des coordonnées x et y; GDI+ utilise les mêmes types (point et PointF) pour représenter des vecteurs et des points. La différence subtile entre les vecteurs et les points réside dans la manière dont ils sont affectés par les transformations. Dans le monde physique, le déplaçant de l'origine d'un système de coordonnées change les positions de tous les points, mais il ne change aucun vecteur de vitesse. Des vecteurs peuvent être mis à l'échelle, tournés, inclinés (cisaillés) ou renversés, mais ils ne peuvent pas être déplacés. Ainsi, lorsqu'une transformation affine est appliquée à un vecteur, les composantes de translation (la dernière rangée de la matrice) sont ignorées.

L'exemple du fichier crée un point et un vecteur à partir de deux tableaux de points (flottants) et ont les mêmes coordonnées. Le point et le vecteur sont dessinés (en bleu) avant l'application de la mise à l'échelle. Une matrice est crée avec un changement d'échelle, une rotation et une translation (de 100 en X). Cette matrice est appliquée aux deux tableaux (point et vecteur). Le point et le vecteur sont redessinés (en rouge) avec les nouvelles valeurs. Le point a subi la translation en X mais pas le vecteur.

Résultat de la fonction
Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.
PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium