cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 2023
-
20 sept. 2007 à 18:27
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
27 sept. 2007 à 13:54
Salut à tous...
Je suis embêté et je me creuse la tête depuis quelques jours sur ce problème.
J'utilise un picturebox de 220 pixel par 220 pixel et je veux dessiner des croix. Ces croix seront des coordonnées géographiques. Il y a deux possibilité de coordonnées. Soit des coordonnée en Y seront des valeurs entre 5 000 000 et 6 000 000 et en X entre 200 000 et 350 000 (système géodésique) ou en système local donc des coordonnée en Y et X valant de - 5000 à 5000.
Comment faire pour dessiner les croix dans un picturebox de 202X220
Quel est le meilleur calcul afin de faire dessiner les croix avec le système géodésique et l'autre calcul pour le système local ???.
La précision est importante, je ne peux arrondir les coordonnées. Ces coordonnées auront 3 décimals.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 sept. 2007 à 15:00
Ok, dans ce cas là donc tu ne respecte pas le ratio de départ de ta zone de point.
Tu préfère appliquer une échelle différente sur chacun des axes ce qui aura donc pour effet donc de déformer l'image.
Par contre, au lieu de calculer tes échelles par rapport à la plage théorique possible des valeurs, tu les optimise en les calculant sur la plage d'évolution réelle de tes valeurs. Tu optimise ainsi l'espace d'affichage des points et minimise par la mêmeoccasion, plus ou moins l'effet de déformation en fonction de tes valeurs.
Ce peut effectivement etre un bon compromis.
Par contre attention avec ton calcul, tes points min et max sur chacun des axes se trouveront effectivement dessinés en plein sur l'axe.
Si cela est génant il te faudra prevoir une petite marge de chaque coté en corrigeant tes valeur min et max dans le calcul des échelles et lors des tracé des points :
Min = ValMin - quelques points
Max = ValMax + quelques points
---- Sevyc64 (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 sept. 2007 à 20:42
Tu ne peux arrondir les coordonnées, mais tu sera bien obligé de le faire pourtant.
Prennons le cas des coordonnées géodesiques, y entre 5000000 et 6000000 soit un gap de 1000000 si j'ai bien compris.
1000000 à representer sur 220 points (pixels). Cela veut dire que 1 pixel va representé 4545.4545 unités géodésiques soit 4545 puisque un pixel est un entier. Tu auras donc une résolution de 4545 sur l'échelle des Y en système géodésique.
En d'autre termes, toute variation sur Y inférieure à 4545 unités sera tout bonnement invisible sur ton image.
Quant à la solution, à quelque chose près je te l'avais déjà donné dans un de tes précédents post. Il te faut appliquer un facteur d'échelle sur tes points.
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 20 sept. 2007 à 21:09
Salut...
meric pour ta réponse...
Ta solution est intéressante mais pour la coordonnée X, qu'est ce que je fais.... Pour le X ca me donne un Gap de 150000.
Mais je ne peux faire
X_PB = ( X_Geo - 200000) * ( 220 / 150000)...
Car je n'ai pas le même rapport entre les coordonnées Y et X.
Donc j'aurais une mauvaise représentation des croix. Mes coordonnées X ne seront pas en relation avec les coordonnée Y.. ???
Les coordonnées X seront décalées et ne seront pas au bon endroit dans le picturebox
Tu comprends.. ??? ou c'est moi qui manque un élément pour saisir ton idée...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 sept. 2007 à 21:30
Oui le problème vien du fait que tu n'as pas le même ratio d'echelle sur ta picturebox (environ 10/11) et sur ta plage de mesure géodésique (15/100). C'est un peu comme lorsque tu essaye d'afficher un film 4/3 sur une tv 16/9 (ou inversement). Soit ut tiens compte du gap sur chaque axe, et au final ça te donne une image étirée (ou compréssée suivant le cas), soit tu fait en sorte de conserver le ratio de départ, et du coup tu as une partie de la zone d'affichage qui ne sert pas sur l'un ou l'autre des axes.
Ton soucis est que tu as une zone de mesure extremement allongée verticalement que tu essaye d'afficher dans une image quasiment carrée.
Dans ton cas , puisque c'est l'axe Y qui est le plus important, si tu veux conservé le ratio, c'est lui qui va fixé le facteur d'échelle
X_PB = ( X_Geo - 200000) * ( 220 / 1000000)
Mais ça va as faire très joli et de la même façon tu aura une résolution de 4545 en X . Sur un gap de 150000, ça ne fait guere que 33 pixels utiles en X
Une des solutions serait de pour voir passer en coordonnées logarithmiques au moins sur l'axe des Y, mais tu pert la représentation naturelle des points (la représentation logarithmique a pour effet de compresser les nombres de grande valeur)
---- Sevyc64 (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 26 sept. 2007 à 18:49
Salut...
J'ai un autre petit probleme que ca fais 1 heure que je cherche et que je ne trouve pas....
Quand je fais un zoom j'ai des croix qui quitte le picturebox. Mais quand je regarde la grosseur du picturebox et les coordonnée de X et Y en pixel, les croix devrais apparaitre dans le picturebox...
Je fais le text avec 2 coordonnées... Au départ les coordonnées son visible dans le picturebox de 205 par 205. J'ai un point qui se situ au centre droit et un autre au centre gauche. Lorsque je zoom, mes croix se distance et ma crois qui se situe au centre gauche se déplace à gauche. La croix de droite se déplace à droite. Ma croix de gauche disparaitra apres 3 zooms et ma croix de droite reste toujours visible. La croix droite se déplace, à chaque fois que je zoom, vers la droite et je peux la visualiser avec le scrollbar. Mais ma croix de gauche devient invisible et je ne peux pas déplacer le scrollbar vers la gauche. Vois-tu pourquoi.
Peut-être me l'as-tu déjà dit mais je ne saisi pas pourquoi ca fonctionne pas.
Private
Sub cmdZoomPlus_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles cmdZoomPlus.Click
Dim i AsInteger
Dim PB1Height
As
Integer, PB1Weight
As
Integer
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 sept. 2007 à 21:13
J'avoue que là je sèche, si tu perds le point c'est parce que je pense tu redéfinie à chaque fois l'origine de la picturebox et encore j'en suis pas sur.
Qaunt à résoudre le problème je ne vois pas.
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 27 sept. 2007 à 13:47
J'ai trouvé....
Si ca t'interesse.....
Je redéfinnissais le picturebox et je le déplacais également (pour le centrer). À chaque zoom je le déplacait de -25 alors je perdais une partie du picturebox...