Bonjour,
J’ai un point a une certaine position dans un polygone.
Puis je fait différentes opérations sur ce polygone : translation rotation et zoom
Comment déterminer la nouvelle position du point en fonction du nouveau polygone.
Merci
Bonjour,
J’ai un point a une certaine position dans un polygone.
Puis je fait différentes opérations sur ce polygone : translation rotation et zoom
Comment déterminer la nouvelle position du point en fonction du nouveau polygone.
Merci
Bonjour
Ce que tu décris s'appelle une "similitude", en géométrie. Or, la similitude conserve les barycentres. Donc l'image du point, barycentre des sommets du polygone, est le barycentre des images des sommets par cette similitude, avec les mêmes poids, évidemment.
Bonjour,
OK … alors ça veut dire quoi pour toi «une certaine position» ? comment est déterminée cette position ?
Si cette «certaine position» est du genre «un point qui est à une distance de 3 unités d'un des points du polygone dans la direction d'un autre point du polygone» et que tu désires garder la même construction n'est absolument pas la même chose que si cette «certaine position» est du genre «le point à l'intersection de droites ayant pour support quatre points du polygone» …
Ensuite ça veut dire quoi pour toi «la nouvelle position» ? si c'est l'image du point originel par les mêmes transformations alors il n'y a pas de questions à se poser, si tu désires garder des propriétés identiques au premier exemple de genre de «certaine position» alors il faut réappliquer la transformation qui te donne ce point après avoir transformé ton polygone …
Je pense qu'il va te falloir être plus précis.
Bonjour,
Je crois que c'est d'abord une question de méthode, qui t'empêche de démarrer la rédaction du programme.
Tu dois commencer par te donner les outils appropriés. Les coordonnées des (Ns) sommets doivent être consignées dans un tableau, par des instructions du type:
que tu traduiras dans le langage de ton choix.
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CONST Ns = 17; TYPE Ve2D = RECORD x, y: Extended END; Polygone = ARRAY[0..Ns - 1] OF Ve2D; VAR Pol_0, Pol_1, Pol_2: Polygone;
Il faut ensuite définir la figure de départ, caractérisée par la variable (Pol_0), en attribuant une valeur à toutes les coordonnées par l'appel d'une procédure d'initialisation:
Les transformations géométriques évoquées conduiront à de nouvelles figures par des procédures appropriées affectant les (Ns) éléments du tableau:
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PROCEDURE InitPol(VAR Pol: Polygone); BEGIN ... / ... END; ... / ... InitPol(Pol_0);
a) une translation de vecteur T = (Tx, Ty) en codant les relations:
x' = x + Tx ; y' = y + Ty ;b) une homothétie de rapport (f), centrée sur l'origine (O), en prenant:
x' = f * x ; y' = f * y ;c) une rotation d'angle (t) autour de (O) par le produit matriciel utilisant la matrice carrée (citée de mémoire):
M = (< Cos(t) , -Sin(t) > , <Sin(t) , Cos(t) >) .
Les procédures correspondantes pourront se présenter extérieurement comme suit;
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 PROCEDURE Transl(Vtr: Ve2D; VAR PolA, PolB: Polygone); BEGIN ... / ... END; PROCEDURE Hom(f: Extended; VAR PolA, PolB: Polygone); BEGIN ... / ... END; PROCEDURE Rot(t: Extended; VAR PolA, PolB: Polygone); BEGIN ... / ... END;
Partager