Précédent   Forum FS Generation > Futura-Sciences : les forums de la science > MATHEMATIQUES > Mathématiques du supérieur
Mot de passe oublié ? Inscrivez-vous !


Réponse
 
Outils de la discussion Modes d'affichage
Vieux 25/01/2008, 10h10   #1
 
Date d'inscription: octobre 2005
Messages: 11
Question Convertir des coordonnées d'un plan non droit à un plan droit

bonjour
suite à la découverte du programme de johnny chung lee pour transformer une wiimote en tableau numérique, (avec ces qualités, et ces défauts) j'essaye de ré-écrire le programme à l'aide d'un script glovepie (plus facile à maitriser que le visual c# express 2005). Malheureusement, je bute sur la conversion des coordonnées transmise par la wiimote pour guider le pointeur de la souris.
je cherche donc la formule mathématique qui permet de convertir des coordonnées x;y à l'intérieur d'un quadrilatère quelconque (rectangle vue par la caméra infrarouge de la wiimote) en coordonnées dans un rectangle (écran de l'ordinateur).
pour mieux comprendre, voici un schéma du tableau vue par la wiimote :

je connais les points de x1;y1 à x4;y4 (étape de la calibration du tableau) le point x5;y5 (position du pointeur infrarouge vue par la wiimote), et je voudrais calculer le point x6;y6 qui correspond à la position du curseur de ma souris.

pour les personnes qui veulent en savoir plus sur ce tableau numérique, voir : http://www.cs.cmu.edu/~johnny/projects/wii/
les défauts que je cherche à corriger :
- les fonctions : mouvement de la souris, clic gauche, clic droit (actuellement seul le clic gauche est géré)
- défaut sous powerpoint la fonction surligneur et stylos fonctionne mal (voir video : http://fr.youtube.com/watch?v=F9IYX1M7gJY )

D'avance merci aux courageux et fort en math

Je précise que mon niveau en math est assez faible.

il me faudrait donc une formule du genre :
x6 = quelque chose * x5 + autre chose / etc (fonction de x1 à x5 et y1 à y5)
y6 = quelque chose * y5 + autre chose / etc (fonction de y1 à y5 et x1 à x5)

PS: si quelqu'un est intéressé par le résultat de mon programme, je pourrais mettre le script à disposition.
coucfr est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 26/01/2008, 15h50   #2
 
Date d'inscription: octobre 2005
Messages: 11
Re : convertir des coordonnées d'un plan non droit à un plan droit

la position de la souris sur x est donnée par un chiffre entre 0 et 1 (idem pour y)

ma méthode actuelle consiste donc à faire le calcul suivant:
x6 = (x5 - x1 - ((x3-x1)*y6)) / { x4 - x3 - [((x4 - x3) - (x2 - x1)) * y6] }

y6 = (y6" - 1) * -1
ce calcul et là pour inverser l'axe des y car les coordonnées de la souris commence dans le coin haut gauche et non pas par le coin bas gauche


y6" = (y5 - y3 - ((y4-y3)*x6)) / { (y1 - y3 - [((y1 - y3) - (y2 - y4)) * x6] }

résultat :
- sur les côtés gauche et droite, la position semble correcte sur les axes X et Y.
- au centre de l'écran, la position semble correcte uniquement sur l'axe Y. il y à un gros décalage sur l'axe X (le curseur est à droite de la position demandée)

je présume que :
- mes formules sont incomplètes.
- sur l'axe Y, au centre de l'écran il doit aussi y avoir un décalage, (moins prononcer car la distorsion sur l'axe y est faible)
- cette distorsion est due à l'inclinaison des côtés de mon quadrilatère
- cette distorsion dépend de cet angle d'inclinaison

question :
- mes équations sont-elle sur la bonne piste ??
- comment corriger cette distorsion ??
coucfr est déconnecté   Réponse avec citation
Vieux 26/01/2008, 18h09   #3
 
Date d'inscription: décembre 2007
Messages: 2 176
Re : convertir des coordonnées d'un plan non droit à un plan droit

En théorie, il suffit de déterminer l'homographie qui transforme
(x1,y1) en (0,0)
(x2,y2) en (l,0)
(x3,y3) en (0,h)
(x4,y4) en (l,h)
l et h étant la largeur et la hauteur de l'écran.

En pratique, les calculs risquent d'être monstrueux.
God's Breath est déconnecté   Réponse avec citation
Vieux 26/01/2008, 18h17   #4
 
Date d'inscription: octobre 2005
Messages: 11
Re : convertir des coordonnées d'un plan non droit à un plan droit

Citation:
Envoyé par God's Breath Voir le message
En théorie, il suffit de déterminer l'homographie qui transforme
(x1,y1) en (0,0)
(x2,y2) en (l,0)
(x3,y3) en (0,h)
(x4,y4) en (l,h)
l et h étant la largeur et la hauteur de l'écran.

En pratique, les calculs risquent d'être monstrueux.
monstrueux comment ??

je présume donc que les calculs que je fais actuellement ne sont pas juste.
coucfr est déconnecté   Réponse avec citation
Vieux 27/01/2008, 00h09   #5
 
Date d'inscription: novembre 2005
Âge: 20
Messages: 1 117
Re : convertir des coordonnées d'un plan non droit à un plan droit

Si par Homographie tu pense identifier le plan au plan complexe est utiliser les application (az+b)/(cz+d) c'est une tres mauvaise idée : ces application sont conforme elle vont donc converver les angles alors qu'on veut envoyer des angles pas droit sur des angles droite. et l'image d'un segment par une homographi est tres rarement un segement.

au début je pensais à une application affine, le probleme c'est que l'image d'un paralélograme est encore un paralélograme donc ca marche pas non plus.

honetement, j'ai peur qu'il n'y ai pas de transformation "canonique" qui fasse cela. c'est à dire je pense qu'il y en à plein, mais aucun n'est préférable au autre. la difficulté est donc de rajouter des condition suplaimentaire sur la transformation que tu cherche afin de définir une et une seul transformation.... et la je vois pas trop comment faire sans comprendre plus qu'elle application tu as en tete....
Ksilver est déconnecté   Réponse avec citation
Vieux 27/01/2008, 00h43   #6
 
Date d'inscription: décembre 2007
Messages: 2 176
Re : convertir des coordonnées d'un plan non droit à un plan droit

Citation:
Envoyé par Ksilver Voir le message
Si par Homographie tu pense identifier le plan au plan complexe est utiliser les application (az+b)/(cz+d) c'est une tres mauvaise idée : ces application sont conforme elle vont donc converver les angles alors qu'on veut envoyer des angles pas droit sur des angles droite. et l'image d'un segment par une homographi est tres rarement un segement.
Je pensais à une homographie projective, parfaitement définie par les images des quatre points à envoyer aux quatre coins de l'écran.
Reste à en déterminer la matrice 3x3 en passant par des coordonnées homogènes, et à restituer son expression en coordonnées cartésiennes pour les points à distance finie.
Ya plus qu'à faire les calculs...

Ca ne marchera que si la transformation cherchée conserve les alignements...
God's Breath est déconnecté   Réponse avec citation
Vieux 27/01/2008, 10h17   #7
 
Date d'inscription: octobre 2005
Messages: 11
Re : convertir des coordonnées d'un plan non droit à un plan droit

Citation:
Envoyé par Ksilver Voir le message
et la je vois pas trop comment faire sans comprendre plus qu'elle application tu as en tete....

l'application : c'est celle du tableau numérique.

- la camera infrarouge d'une télécommande de wii (la wiimote) placé sur le côté de l'écran
- un stylos avec une diode infrarouge et un bouton
- mon programme (ou celui de johnny chung lee mais qui à quelques défauts) qui transforme les coordonnées captés par la wiimote sur l'écran et les transformes en coordonnés souris.
- la précision du positionnement de la souris (et donc du calcul) n'a pas besoin d'être totalement exact. il peut y avoir une légère erreur (la plus petite possible quand même). une erreur de 1 à 5 pixels sur un écran en 1024 x 768 ne devrais pas ce voir.

le principale problème :
- la caméra est sur le côté de l'écran (et même parfois décalée vers le bas)
- ce décalage provoque une distortion de l'écran dépendant directement de la position de la wiimote et donc de(s) l'angle(s) horizontal (et vertical) entre la caméra et le tableau.
- ce décalage pouvant changer en fonction de l'utilisateur, il y a une étape de calibration.

Si il faut plusieurs calculs pour réaliser cette transformation, pas de problème ( il faudra bien sure me détailler les étapes car les maths et moi: )

le logiciel glovepie accepte la plupart des fonctions mathématiques et l'utilisation de variable (mémoire)

Dernière modification par coucfr ; 27/01/2008 à 10h18. Motif: mise en forme
coucfr est déconnecté   Réponse avec citation
Vieux 27/01/2008, 17h03   #8
 
Date d'inscription: octobre 2005
Messages: 11
Re : convertir des coordonnées d'un plan non droit à un plan droit

d'après mes recherches sur internet, et mon analyse du programme original de johnny chung lee (programmer en visual c# express que je ne maitrise pas du tout), un solution pourrais être de passer par une (des) matrice(s). (je ne sais pas comment fonctionne une matrice)
coucfr est déconnecté   Réponse avec citation
Vieux 27/01/2008, 22h01   #9
 
Date d'inscription: novembre 2005
Âge: 20
Messages: 1 117
Re : convertir des coordonnées d'un plan non droit à un plan droit

Je pensais à une homographie projective, parfaitement définie par les images des quatre points à envoyer aux quatre coins de l'écran.
Reste à en déterminer la matrice 3x3 en passant par des coordonnées homogènes, et à restituer son expression en coordonnées cartésiennes pour les points à distance finie.


certe ca définit une unique application, mais celle ci ne conserve pas les segements : un segment est envoyé sur un arc d'ellipse si je ne me trompe pas.
Ksilver est déconnecté   Réponse avec citation
Vieux 28/01/2008, 16h08   #10
 
Date d'inscription: décembre 2007
Messages: 2 176
Re : convertir des coordonnées d'un plan non droit à un plan droit

Les transformations projectives transforment les droites en droites, fort heureusement.
God's Breath est déconnecté   Réponse avec citation
Vieux 30/01/2008, 14h51   #11
 
Date d'inscription: octobre 2005
Messages: 11
Re : Convertir des coordonnées d'un plan non droit à un plan droit

Je pensais aussi:
Est-il possible de "redresser" les axes X, Y et les cotés du quadrilatère.
Il y aurait ainsi une transformation des coordonnées faites en 4 étapes :
- on "redresse" les coordonnées X5, Y5 sur l'axe Y on trouve X5', Y5'
- on "redresse" les coordonnées X5', Y5' sur le côté haut on trouve X5'', Y5''
- on "redresse" les coordonnées X5'', Y5'' sur le côté droit on trouve X5''', Y5'''
- on "redresse" les coordonnées X5''', Y5''' sur l'axe X on trouve X6, Y6

Le fait de "redresser" les coordonnées X5, Y5 sur l'axe Y provoque un déplacement du point X5, Y5 selon un arc de cercle ayant pour centre X3, Y3
Quel serait la formule qui permet de calculer ce déplacement ?

Le fait de "redresser" les coordonnées sur le côté haut provoque un déplacement du point X5', Y5' selon un arc de cercle ayant pour centre X1, Y1
Quel serait la formule qui permet de calculer ce déplacement ?

pour les autres transformation, je pense pouvoir arrivé à adapté les calculs
coucfr est déconnecté   Réponse avec citation
Vieux 31/01/2008, 07h57   #12
 
Date d'inscription: octobre 2005
Messages: 11
Re : Convertir des coordonnées d'un plan non droit à un plan droit

pour "redresser" x5, y5 sur l'axe Y je pensais utiliser la méthode :

( x, y) = ( rayon cos angle , rayon sin angle )

et donc faire:

x5' = √ [(X5-X3)² + (y5-y3)²] * [ (X1-x3)/ √ [(X1-X3)² + (Y1-Y3)²]}

même genre de calcul sur Y, et aussi sur (X1, Y1) (X2, Y2) (X4, Y4)

même principe pour "redresser" sur l'axe X

par contre comment faire pour "redresser" sur l'axe haut et sur l'axe droit ?

Svp : dites moi si mon raisonnement est juste
coucfr est déconnecté   Réponse avec citation










Réponse

Tags
coordonnee, convertir

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[Mécanique des Fluides] Fonction de courant d'un écoulement plan Aspx Physique 2 11/11/2007 13h51
Conversion d'un espace de 3 points dans plan XYZ en un plan XY. philname Mathématiques du supérieur 4 16/10/2007 00h04
convertir coordonée d'un point d'un plan dans un autre plan _Aravis Mathématiques du supérieur 1 26/09/2007 21h10
Convertion latitude/longitude en coordonnées dans le plan sergeoxford Mathématiques du supérieur 7 03/09/2007 11h56
Retrouver les coordonnées 3D d'un point projeté sur un plan? lho94 Mathématiques du supérieur 5 18/02/2006 15h17


Les dernières actualités
11/10 10:52 - Des supraconducteurs nanométriques pour une nouvelle électronique
10/10 16:44 - Une centrale solaire pilote près de Bordeaux
10/10 14:34 - En bref : l'éclairage remplacera-t-il le Wi-Fi ?
10/10 13:33 - L'eau de boisson est-elle polluée par des médicaments ?
10/10 11:31 - Messenger envoie des images inédites de Mercure
10/10 09:31 - Mondial de l'auto : la Courb C-Zen, un buggy citadin électrique
09/10 17:33 - Les clins d'oeil d'un magnétar

Fuseau horaire GMT +2. Il est actuellement 12h18.


Édité par : vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. Tous droits réservés.