Conversion pixel/latitude,longitude - Java - Programmation
Marsh Posté le 07-05-2007 à 09:17:19
oui je sais sa mais je veux afficher les vrai latitude/longitude
par exemple sur la carte qui s'affiche je veux définir les coordonnées en pixel(0,0) en latitude/longitude(N14°57' W61°31')
Marsh Posté le 07-05-2007 à 09:54:32
pixel(351,347) latitude/longitude(60°51'/14°23')
pixel(189,76) latitude/longitude(61°10'/14°52')
Marsh Posté le 07-05-2007 à 11:32:07
si il y a d'autre solution n'hésiter pas a men faire part merci
Marsh Posté le 12-05-2007 à 18:22:41
Salut,
je me permets de remonter le topic parce que je ne comprends pas comment passer des coordonnées normales aux pixels (art_dupond, tu dis qu'il y a une règle de 3 mais est-ce que c'est bien comme ça : Xp = a*Xn + b (avec Xp les coordonnées en pixel et Xn les coordonnées normales) ?)
Dans ce cas, comment passer de Xn à Xp en fonction de la taille de la fenêtre ? J'ai pensé à un getSize(), mais bon...
Merci
Marsh Posté le 13-05-2007 à 10:41:51
Repère "normal"
|
Repère "pixel"
|
Soit la taille de la carte en pixels Tp et la taille "normale" de la carte Tn.
Pour récupérer la taille de la carte, tu peux récupérer la largeur de ton image en javascript (J'ai pas compris le rapport avec la taille de la fenêtre, je suppose que tu voulais dire la taille de ton image).
Spoiler : |
Pour passer des coordonnées "normales" -> "pixel" :
Le facteur d'échelle dans ce 'sens' est Ep = Tp/Tn
On connait (Xn,Yn), (Xp,Yp) et (An,Bn)
On veut trouver (Ap,Bp)
Pour passer de "pixel" -> "normal" :
Le facteur d'échelle dans ce 'sens' est En = Tn/Tp
On connait (Xn,Yn), (Xp,Yp) et (Ap,Bp).
On veut trouver (An,Bn)
edit : si t'as une image tordue et que l'échelle verticale et l'échelle horizontale sont différentes, il faut calculer un facteur d'échelle "horizontal" et un facteur d'échelle "vertical".
Marsh Posté le 13-05-2007 à 17:03:22
Salut, merci pour ta réponse, je vais essayer de mieux expliquer mon problème (j'aurais dû le faire au début ) :
Mon programme est une JFrame dans laquelle il y a un JPanel, et j'essaye de tracer la courbe représentative d'une fonction (admettons sin(x)). Vu que l'origine est normalement en haut à gauche, je l'ai déplacée pour pouvoir être au centre de la fenêtre en fonction de la taille de celle-ci (donc lors du redimensionnement, le centre du repère est toujours au centre de la fenêtre) ; pour cela, j'ai fait un translate(largeur/2, hauteur/2).
Maintenant mon problème, c'est si je veux tracer la fonction sin(x) sur [-PI, PI] en largeur et sur [-1, 1] en hauteur, comment faire pour que le tracé prenne l'ensemble du Jpanel ?
Pour la largeur, j'ai trouvé (et ça semble fonctionner, mais je n'ai pas compris pourquoi ) :
pour x de -PI à PI (avec un delta x quelconque) faire
[largeur / (PI - (-PI))] * x
C'est là que je parlais de la règle de 3 (a * x + b, mais comme j'ai déjà transformé l'origine du repère, b = 0)
Mais pour la hauteur, je n'ai pas encore trouvé.
Merci pour ton aide en tout cas
Marsh Posté le 13-05-2007 à 22:55:04
oups, j'ai complètement zappé que c'était du java
Pour la hauteur, ca devrait être sin(x) * demi hauteur de ton Jpanel.
Reste à trouver la hauteur, mais comme je ne connais pas java
Par contre, si c'est juste ça le problème, crée pit-être un topic pour demander comment trouver cette hauteur.
Marsh Posté le 14-05-2007 à 00:24:20
Ah ok, c'était pour ça le javascript ^^
Bon sinon pour la hauteur c'est (hauteur / Ymin - Ymax) * sin(x), mais bon je tâtonne en fait, donc si quelqu'un pouvait m'expliquer la raison
Merci à toi art_dupond !
Marsh Posté le 14-05-2007 à 00:54:13
Ici, tu as un sinus que tu veux mettre dans un JPanel de hauteur H.
Ton sinus varie de -1 à 1, c'est à dire qu'en tout, tu as besoin de "2" ( = 1-(-1) ) pour dessiner ton sinus.
Ici, tu ne disposes pas de 2 mais de H (la hauteur).
Comment passer de 2 à H ? Ben il faut diviser par 2 puis multiplier par H :
2 -> 2 (/2 * H) = H
Donc si tu appliques la même règle pour toutes tes valeurs, c'est-à-dire que tu appliques la règle à ton sinus, il sera comme tu le veux dans ton JPanel, c'est-à-dire que quand il sera max (ou min), il touchera le bord haut (ou bas).
=> sin(x) -> sin(x) (/2 * H) = sin(x) dans le JPanel
note : c'est (Ymax - Ymin) ou |Ymin - Ymax| (en valeur absolue)
Marsh Posté le 14-05-2007 à 16:41:43
Salut, merci pour ton explication, c'est beaucoup plus clair maintenant
Sinon pour la hauteur, étant donné que l'axe des ordonnées "pointe" vers le bas, je suis obligé de prendre une valeur négative, mais ça reste juste du détail.
Marsh Posté le 07-05-2007 à 08:26:13
bonjour,
j'aimerais de l'aide pour convertir des pixels en latitude/longitude si vous avez des exemples de méthode se serai sympa de me les transmettre le plus vite possible merci d'avance a tous les membres!