- double Rmin2 = Rmin / 2;
- double Rmax2 = Rmax / 2;
- double Imin2 = Imin / 2;
- double Imax2 = Imax / 2;
- double Rdecal = Tr - (Rmin2 + Rmax2) / 2;
- double Idecal = Ti - (Imin2 + Imax2) / 2;
- Rmin2 += Rdecal;
- Rmax2 += Rdecal;
- Imin2 += Idecal;
- Imax2 += Idecal;
+ // calcul des coordonnées du point cliqué
+ Tr = Rmin + x * (Rmax - Rmin) / (w.width - 1);
+ Ti = Imax - y * (Imax - Imin) / (w.height - 1);
+
+ // calcul de la nouvelle zone d'intérêt :
+ // zoom ×2 en direction du point cliqué
+ const int zoom = 2;
+ double Rmin2 = Rmin / zoom;
+ double Rmax2 = Rmax / zoom;
+ double Imin2 = Imin / zoom;
+ double Imax2 = Imax / zoom;
+ double Rshift = Tr - (Rmin2 + Rmax2) / 2;
+ double Ishift = Ti - (Imin2 + Imax2) / 2;
+ Rmin2 += Rshift;
+ Rmax2 += Rshift;
+ Imin2 += Ishift;
+ Imax2 += Ishift;