Faire correspondre des points ...

Résolu/Fermé
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 - Modifié par kangouroux le 3/11/2012 à 22:09
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 5 nov. 2012 à 18:53
Bonjour,
je fais appel à vous aujourd'hui car j'ai un souci de logique mathématique insoluble.

Je vais extrêmement simplifier mon souci, pour plus de clarté :
J'ai un rectangle dans lequel j'affiche une image, ce rectangle mesure (800;1168)
Une image miniature à l'intérieur, cette image miniature mesure (800;584) (ces dimensions sont variable en fonction de l'écran et de la résolution de l'utilisateur)
Une image max à l'intérieur, cette image max mesure (4080;3128)

Ce que je souhaite faire:
Quand l'utilisateur clique sur le rectangle, je récupère les coordonnées que je fais correspondre sur l'image miniature afin d'agrandir l'image sur la zone ou l'utilisateur clique.

Ce que je ne parviens pas à faire c'est de faire correspondre le point de l'image miniature sur l'image max afin de mettre au centre de l'écran la zone en question.

La formule mathématique la plus proche du résultat que je souhaite (avec les explications):

imageMini = 800 de large et 584 de haut;
imageMax = 4080 de large et 3128 de haut;

CliqueX = 700; // Coordonnée X du clique de l'utilisateur
CliqueY = 500; // Coordonnée Y du clique de l'utilisateur

middleX = 800 / 2; // Milieu en X de la surface d'affichage
middleY = 1168 / 2; // Milieu en Y de la surface d'affichage

rationZoomX = 4080 / 800; //Ratio d'agrandissement de l'image en X
rationZoomY = 3128 / 1168; // Ratio d'agrandissement de l'image en Y

middleImgX = CliqueX * ratioZoomX;
middleImgY = CliqueY * ratioZoomY;

OffsetX = middleX - middleImgX;
OffsetY = middleY - middleImgY;

Alors quand l'utilisateur clique au centre de l'image miniature, le zoom ce fait bien sur le centre, mais quand il clique aux coordonnées (700;500) (par exemple) l'image zoom mais un grand décalage ce fait ressentir ...

J'espère avoir été claire, car ça fait 1 semaine que je cherche à corriger mon problème...

Pour plus de précision, c'est pour une application java Android je travail dans un imageView avec un MATRIX ( c'est juste pour un complément d'information ...)

Je vous remercie par avance de vos suggestions :)

14 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
3 nov. 2012 à 23:12
Je ne sait pas si je vais pouvoir t'aider, mais je n'arrive pas à m'imaginer..
Peux-tu mettre des image en ligne, par exemple ici : "https://www.cjoint.com/" sans données confidentielles .. ensuite, dans ton prochain msg, tu nous met le lien qu'on puisse se rendre compte.
Les images:
- L'image mini, normal et maxi,
- L'image résultat, quand ok (click au centre de l'écran),
- L'image résultat pas ok (click au pixel [700,500].
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
4 nov. 2012 à 00:05
Même avec des images cela ne sera pas compréhensible car les images ne le permettent pas. Je suis donc voué à me débrouillé seul :'(
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
4 nov. 2012 à 10:12
Alors voilà j'ai quand même fais des capture d'écran ...
L'image réduite pour l'adapter à la zone d'affichage :
http://cjoint.com/data3/3Kej3YBOlDY.htm

Je double clique sur sur le bas à droite de l'image sur "index Blucalion 2012"
Donc ce que je souhaiterais c'est que ça soit au centre de la zone d'affichage.
Mais voilà ce que j'obtiens :
http://cjoint.com/data3/3KekaKjuBVb.htm

Malgré mon algorithme de calcul seul le centre est approximativement mit au centre de la surface d'affichage après le zoom ...
La surface d'affichage c'est le rectangle noir, on l'aperçoit quand l'image est en miniature.

Ce que je voudrais c'est faire correspondre le point de clique de de la surface d'affichage sur l'image miniature, ça c'est bon.
Ensuite faire correspondre le point de la petite image sur l'image maximisé... mais cela ne fonctionne pas...

Enfin en espérant que les images vous permettront de me venir en aide.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
4 nov. 2012 à 12:41
Bonjour kangouroux,
Juste pour voir si j'ai bien compris: https://www.cjoint.com/?BKemO6k8XEY
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
5 nov. 2012 à 12:43
Oui il y a de l'idée, maintenant c'est de cliquer sur un point de la zone d'affichage (cadre noir) de le faire correspondre avec l'image miniature ( coordonnée du clique - la distance en haut et en bas pour le centrage de l'image).
Ensuite, une fois les coordonnées de l'image miniature déterminées, les faire correspondre sur l'image maximisée afin de mettre ce point au centre de la zone d'affichage (rectangle noir) cette parti me pose un très gros souci ...
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 nov. 2012 à 17:06
Je ne doit pas avoir les idées bien claires... car je n'ai pas tout compris .. désolé.
A une prochaine fois peut-être
Bonne prog
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
5 nov. 2012 à 17:40
J'avais basé tout mes espoir en toi, la seule réponse que j'ai eu ...

Je voudrais savoir si il existe une formule mathématique pour faire correspondre chaque point (X;Y) d'une image de petite taille avec les points (X;Y) d'une image plus grande ??

Merci quand même Heliotte
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 nov. 2012 à 17:59
Tu veux dire:
Que la grande image englobe la petite image ?
Tu veux faire correspondre quels points de la petite image avec quels points de la grande image ?
Cela ne me dérange d'encore essayer mais c'est le problème que je ne comprends pas.
C'est comme si tu me parlait chinois
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
5 nov. 2012 à 18:15
Mes excuses dans ce cas, je simplifie un max on oublie les images la zone d'affichage et tout le reste ...

J'ai deux carré un petit un 5 fois plus grand.
Ce que je voudrais c'est faire correspondre n'importe qu'elle point du petit carré dans le grand.
Exemple le point (0;0) sera le sommet en haut à gauche dans les deux carrés ...
je voudrais faire ça avec n'importe quel autre point.

Existe t-il un moyen d'y parvenir ? Ou dois-je me contenter d'une approximation ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 nov. 2012 à 18:30
Sans doute. Espérons sans approximation. Bref,
x = déplacement horizontal et y = déplacement vertical
pos | petit carré | grand carré
.. x . | ...............0 | ...............0
.. y . | ...............0 | ...............0

.. x . | ...............0 | ...............0
.. y . | ........... 10 | ............. 50 ?

.. x . | ...............0 | ...............0
.. y . | ........... 12 | ............. 60 ?

Les ? sont pour savoir si j'ai bien compris la valeur y pour le grand carré !
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
5 nov. 2012 à 18:36
Oui ça c'est l'approximation :)
Car si on prend le point 0 on trouve 0 mais si on prend le point 1 c'est le point 5 ...

Enfin je suis sur la bonne voie, je te remercie pour le coup de main.
Je pense que je vais me contenter de cette approximation, au final c'est très bien ... car l'erreur est minime excepté si l'utilisateur zoom à plus de 10x ^^

Donc je vais terminer mon option de zoom avec cette erreur que j'appellerais défaut de calibrage ça fais classe :)

Enfin encore merci à toi Heliotte pour le soutient apporté :), ça m'a permit de prendre pas mal de recul ^^
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 nov. 2012 à 18:39
Pour moi ce n'est pas une approximation car tu m'as dit : la grande image est cinq fois supérieure à la petite, donc, j'ai simplement multiplier par cinq
0
kangouroux Messages postés 580 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 28 février 2013 37
5 nov. 2012 à 18:42
Oui je sais depuis le début j'utilise un produit en croix, je ne pense pas que ce soit la bonne technique car ce n'est pas extrêmement précis.

Mais je fais pas un programme pour la NASA donc le défaut de calibrage n'est en soit pas gênant ;)
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
Modifié par Heliotte le 5/11/2012 à 18:54
Ok si correct pour toi
Bonne programmation l'Australien !
0