Les coordonnées relatives du curseur par rapport au centre:
Xcu = Xs - Xc ; Ycu = Ys - Yc
permettent d'accéder à l'angle orienté As = (Ux , CS).
Il doit y avoir une fonction appropriée AnglePol(x, y) dont je ne connais pas le nom exact ([I]ArcTan2(x, y)[/I ]? ); sinon, on la programme facilement à l'aide de la fonction ArcTan(.)
# Un calcul encore plus simple est envisageable, en faisant intervenir la longueur fixe de la demi-diagonale (indépendante de l'indice):
D = CCi = ((u[i] - Xc)2 + (v[i] - Yc)2)1/2 ,
et en utilisant les rapports de similitude:
(u[i] - Xc)/Xcu = (v[i] - Yc)/Ycu = D/(Xcu2 + Ycu2)1/2
d'où:
u[i] = Xc + Xcu*D/(Xcu2 + Ycu2)1/2 et v[i] = Yc + Ycu*D/(Xcu2 + Ycu2)1/2 .
Éviter la coïncidence du curseur avec le centre (Xcu = Ycu = 0) qui provoquerait le plantage du programme, en imposant par exemple la condition d'exécution du calcul:
(Xcu2 + Ycu2) > 100 (en nombre de pixels).
Calculs à vérifier, parce que faits rapidement à la volée.
Partager