Translation de coordonnées entre 2 plans
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Translation de coordonnées entre 2 plans



  1. #1
    vohu

    Question Translation de coordonnées entre 2 plans


    ------

    Bonjour,

    VOilà mon problème. C'est un problème de géométrie (même si parle de programme...)

    J'ai un programme dans lequel je voudrais ajouter une "marge"

    Je m'explique :

    Dans le fichier image joint à mon post j'ai la représentation d'un plan Jaune sur lequel je récupère les coordonnées d'un point A.

    Matériellement, j'ai un problème de sensibilité quand j'approche les bords de ce plan. donc, je voudrais pouvoir récupérer les coordonnées dans le plan Bleu (en gardant l'origine en haut à gauche toujours)

    MAIS, il faut que les coordonnées récupérées dans le plan BLEU me donnent les coordonnées proportionnelles qui me permettent de me déplacer dans le plan JAUNE.

    Je bloque, j'ai tenté plusieurs solution, en déplaçant le point Origine au centre, mais je me retrouve toujours avec une partie du plan innacessible...

    Autre info importante, je voudrais pouvoir définir soit la marge entre les bords du plan jaune et bleu, ou alors un ratio pour pouvoir 'configurer' la taille du plan BLEU. Il faut donc que celle ci soit défini dans la formule sous forme d'une constante

    Merci d'avance pour votre aide. :$

    -----
    Images attachées Images attachées  

  2. #2
    vohu

    Re : ratio

    désolé pour le titre... j'arrive pas a rééditer mes messages....

    Je voulais mettre : translation de coordonnées entre 2 plans.

  3. #3
    invite19431173

    Re : ratio

    Citation Envoyé par vohu Voir le message
    Je voulais mettre : translation de coordonnées entre 2 plans.
    Titre modifié et pièce jointe validée.

  4. #4
    gg0
    Animateur Mathématiques

    Re : Translation de coordonnées entre 2 plans

    Bonjour.

    Si je comprends bien, tu veux gérer les coordonnées d'un point de la partie bleue. C'est simple. Et tu voudrais reproduire ensuite ce qui a été fait dans la partie bleue pour l'afficher sur l'image complète (jaune).
    Je vais supposer que tu as un repérage de la partie jaune parallèle aux côtés, et que le point opposé à l'origine (donc en bas à droite) a pour coordonnées (A,B). la partie jaune est donnée par les coordonnées de son origine (d,b) (ce sont les décalages à droite et en bas par rapport à l'origine). Son point en bas et à droite a donc pour coordonnées (A-d,B-b).
    Quand je parle (et parlerai) de coordonnées, je me réfère toujours à la partie jaune, même pour les points qui sont dans la partie bleue. Je ne parlerai jamais de système de coordonnées de la partie bleue pour éviter les confusions (et d'ailleurs ce n'est pas nécessaire).

    Considérons un point M(x,y) de la partie bleue. Il représente un certain point N(X,Y) de la partie jaune, dont les distances aux axes sont proportionnelles aux distances de M aux bords haut et gauche de la partie bleue. Donc :
    X=k(x-d)
    Y=k'(y-b)
    les deux facteurs de proportionnalité étant généralement différents.
    je te laisse finir, on trouve facilement les facteurs k et k' en prenant le point en bas à droite de la partie bleue.

    Cordialement.

  5. A voir en vidéo sur Futura
  6. #5
    Ouagadagou

    Re : Translation de coordonnées entre 2 plans

    Bonjour,

    gg0, je crois que tu as répondu à l'inverse du problème de Vohu. À ce que j'ai cru comprendre, ce qu'il veut faire, c'est passer du grand plan jaune au petit plan bleu, tout en conservant les échelles.
    Si l'on note :
    - (X,Y) les coordonnées dans le grand repère jaune;
    - (x,y) dans le nouveau repère, le petit bleu;
    - M la longueur de la marge qu'il y aura de chaque côté.

    On devrait avoir les points suivants qui se correspondent :
    - (0,0) <=> (0+M,0+M);
    - (0,ymax) <=> (M,Ymax-M);
    - (xmax,0) <=> (Xmax-M,0+M);
    - (xmax,ymax) <=> (Xmax-M,Ymax-M);
    - le milieu du plan jaune coïncidera alors avec le milieu du plan bleu.

    Le problème qui se pose alors c'est qu'il ne suffit pas simplement de toujours additionner ou retrancher un même nombre, mais d'additionner ou retrancher en fonction de la position initiale du point (X,Y)... Et là j'avoue que je sèche.

    C'est bien ça ton problème Vohu ?

  7. #6
    vohu

    Re : Translation de coordonnées entre 2 plans

    Merci pour votre aide

    Ouagadagou > OUI, tu as tout compris


    Un moment j'ai sorti un algo du genre :
    je n'utilise plus une "marge" mais un "ratio" pour calculer les dimensions du petit plan

    Prenons juste X :

    si X < xMax/2 : X = X + xMax/2 - X*ratio
    si X > xMax/2 : X = X - xMax/2 + X*ratio

    Et bien, ça ne fonctionne pas

  8. #7
    vohu

    Re : Translation de coordonnées entre 2 plans

    Heu... je suis bête...

    Je vais essayer avec :
    si X < xMax/2 : X = X + (xMax/2) - (xMax/2)*ration
    si X > xMax/2 : X = X - (xMax/2) + (xMax/2)*ration

    Je crois que ça va aller beaucoup mieux...

    Pour Y, même chose...

  9. #8
    fiatlux

    Re : Translation de coordonnées entre 2 plans

    Salut

    Je suis pas sûr de comprendre ton problème: si tu as les coordonnées (X,Y) d'un point dans le plan jaune, ce que tu veux toi c'est quoi ?
    - les coordonnées de ce même point mais exprimées dans le repère du plan bleu ? (par exemple si (X,Y)=(2M,2M) alors (x,y)=(M,M)
    - ou bien les coordonnées du point "équivalent" (donc pas au même endroit dans l'absolu, mais au même endroit dans le rectangle par rapport à sa propre origine) (avec rapport d'échelle) dans le plan bleu ? (par exemple si (X,Y)=(2M,2M), alors (x,y)=(2M/ratio1, 2M/ratio2)
    Dernière modification par fiatlux ; 29/04/2012 à 16h58.
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  10. #9
    gg0
    Animateur Mathématiques

    Re : Translation de coordonnées entre 2 plans

    Si j'ai pris le problème à l'envers, il suffit d'inverser le calcul, puisque je me suis contenté d'écrire les relations entre les deux types de coordonnée.
    La seule difficulté est que le "ratio" n'est pas le même dans les deux directions, donc si on veut faire avec un seul facteur, ça ne marchera pas.

    Bon, je vous laisse, le problème étant clairement traité.

    Cordialement.

  11. #10
    Ouagadagou

    Re : Translation de coordonnées entre 2 plans

    Ok,

    j'ai essayé de réfléchir un peu sur ce que tu as trouvé, et ça m'a l'air correct. Il y aura alors 4 cas différents, et ça ne me semble pas possible de les regrouper sous un cas unique.

  12. #11
    fiatlux

    Re : Translation de coordonnées entre 2 plans

    Si je pars du principe que c'est le 2e cas que j'énonce ci-dessus, c'est à dire que tu veux les coordonnées (x,y) d'un point dans le petit rectangle, point qui se situe non pas au même endroit (dans l'absolu) que ton point dans le grand rectangle (c'est-à-dire que (M,M) se situera bien en (0,0) dans le petit rectangle, mais (2M,2M) ne sera pas simplement en (M,M) dans le petit rectangle, mais un peu "plus haut et plus à gauche". Donc si c'est bien ça, il te faudra 2 ratios, un pour la hauteur (côté vertical), un pour la largeur (côté horizontal). Et ils sont très simples à calculer. Soit H la hauteur du rectangle jaune et L sa largeur, même chose avec h et l pour le rectangle bleu, alors:
    H = h + 2*M
    L = l + 2*M
    Le ratio pour la hauteur est donc:
    rh = h/H < 1
    Et celui pour la largeur:
    rl = l/L < 1

    Dans ton problème, il ne s'agit pas d'une simple translation, mais d'une translation + une homothétie (rapport d'échelle). Autrement dit si tu as un point (X,Y) du plan jaune, tu commences par le mettre à l'échelle (là a et b sont les coordonnées pour un petit rectangle dont l'origine serait la même que celle du jaune)
    a = X*rl
    b = Y*rh
    Puis tu le translates pour l'exprimer dans le repère du petit rectangle:
    x = a+M = X*rl + M
    y = b+M = Y*rh + M
    Dernière modification par fiatlux ; 29/04/2012 à 17h08.
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  13. #12
    vohu

    Re : Translation de coordonnées entre 2 plans

    J'ai énormément de mal à comprendre vos explications, d'ailleurs, ça me parrait logique, j'ai déjà tellement de mal à expliquer ce que je voulais faire.

    Concrêtement :

    j'ai un capteur tactile fait maison.

    Quand je touche l'écran sur les bords, les coordonnées que j'obtiens sont très mauvaises... donc, ce que je veux faire, c'est récupérer les coordonnées dans le petit plan (qui correspond en fait, au grand, avec des marges sur les bords)

    le but étant d'accéder FACILEMENT aux bords du GRAND PLAN, je veux récupérer les coordonnées dans le petit plan, l'origine du petit plan me permetant d'accéder à l'origine du grand.
    Ce que je trouvais compliqué (car, je crois que la dernière solution que j'ai postée est bonne), c'est de pouvoir atteindre de la même façon, le point oposé à l'origine.

    Biensur, ce calcul fait que lorsque je m'approche du point Origine du grand plan, les valeurs renvoyées sont négatives (ce qui ne me dérange pas) et à l'oposé, même chose, je sors du grand plan.

    j'ai fait un test (sans matériel car je ne suis pas chez moi)
    et il semblerai que l'algo suivant fonctionne :
    si X < xMax/2 : X = X + (xMax/2) - (xMax/2)*ratio
    si X > xMax/2 : X = X - (xMax/2) + (xMax/2)*ratio
    si Y < yMax/2 : Y = Y + (yMax/2) - (yMax/2)*ratio
    si Y > yMax/2 : Y = Y - (yMax/2) + (yMax/2)*ratio

    Je vous en dirais un peu plus ce soir ou demain

    Merci

Discussions similaires

  1. trouver les coordonnées cartésiennes d'une droite qui a subit une translation perpendiculaire
    Par invite3d943ec0 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 16/08/2011, 19h38
  2. Coordonnées 3D : translation par vecteur
    Par invited33c6641 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 26/07/2011, 18h03
  3. Blocage de translation entre 2 cylindres
    Par invite25b081a7 dans le forum Physique
    Réponses: 1
    Dernier message: 23/04/2010, 22h34
  4. Croisement entre des droites entre deux coordonnées GPS
    Par invited023a47c dans le forum Archives
    Réponses: 3
    Dernier message: 22/05/2009, 12h47