Bonjour,
Les centres des cases étant alignés sur des droites non parallèles, il faut établir une relation bilinéaire entre les indices (u, v) des cases et les coordonnées (x, y) de leur centre sur l'image.
On peut envisager des relations de la forme:
x = A + B*u + C*v + D*u*v ;
y = A' + B'*u + C'*v + D'*u*v ,
l'origine de situant au coin inférieur gauche de la région occupée, et les indices (u, v) variant de 0 à 11.
Si l'on convient de plus de repérer à l'aide de la souris les coordonnées des centres (M1, M2, M3, M4) définis sur l'image (il y a d'autres options), il vient:
X1 = A + 2B + 2C + 4D ;
X2 = A + 9B + 2C + 18D ;
X3 = A + 2B + 9C + 18D ;
X4 = A + 9B + 9C + 81D
(relations analogues pour y)
d'où:
49D = X2 + X3 - X1 - X4 ;
7B = X2 - X1 - (2/73)D ;
7C = X3 - X1 - (2/73)D ;
- calculs à vérifier.
Une fois calculés ces huit coefficients, il suffira d'une double boucle sur les indices
1 2
| FOR u:= 0 TO 11
FOR v:= 0 TO 11 DO |
pour déterminer la couleur autre que le gris clair au voisinage du point de coordonnées (x = F(u, v), y = G(u, v)).
Il faudra imposer une valeur par défaut aux emplacements des cases absentes.
PS: On gagnera en précision en partant du plus grand quadrilatère (M1, M'2, M'3, M'4) inscriptible sur l'ensemble des cases et construit sur les points:
M'2: (11, 2) ; M'3: (2, 11) ; ; M'4: (11, 11) .
Partager