|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Position de la souris [ Linux / OpenGL ] (Samaths)
Informations & options pour cette discussion
|
mardi 22 juillet 2008 à 01:34:20 |
Position de la souris

Samaths
|
Salut à tous. Je poste un message qui n'est pas vraiment une question, mais simplement une solution à un problème que j'ai eu (et que pas mal d'autres ont, avec ce que j'ai vu en faisant mes recherches).
Mon problème était le suivant: quand je clique avec ma souris sur la fenetre, opengl (et glut) me livre les coordonnées en pixel, et pas selon les coordonnées réelles, c'est à dire celle avec lesquelles on dessine. Visiblement, il y a un moyen sûr d'avoir celà, via la fonction gluUnProject . Dans mon cas, je n'arrive pas à faire marcher cette fonction (elle me donne n'importe quoi, mais pas ce que je veux).
De plus, mon cas est spécial: je ne fais que de la 2D (z=0) et je regarde toujours ce plan de manière perpendiculaire. J'ai donc pensé (à raison) quand dans ce cas particulier, il n'y avait pas besoin de sortir la grosse artillerie (c'est à dire d'inverser des matrices, ce qui n'est jamais très bon...).
Voici ma solution, qui me semble être juste.
1. Il faut utiliser la fonction gluPerspective(alpha, #, #, #) (# sont les autres arguments, qui importent peu) pour la projection 2. Pour la "vision", il faut utiliser la fonction gluLookAt( viewX, viewY, viewHeight, viewX, viewY, 0.0, 0.0, 1.0, 0.0) , c'est à dire qu'il faut regarder le plan de manière perpendiculaire à une hauteur de viewHeight au dessus du point (viewX,viewY,0.0).
Dans ce cas, voici les transformations: si la souris est à la position (x,y), alors on a comme point pointé sur l'image (xp,yp) avec:
xp = (x-320) * viewHeight * (2 * tan(alpha/2.0) ) / 640.0 + viewX yp = (320-y) * viewHeight * (2 * tan(alpha/2.0) ) / 640.0 + viewY
Ceci pour une fenetre 640x640 (sinon, c'est pas bien compliqué d'adapter, 320 étant la moitié de 640...)
Remarques finales: * une fois on a "x-320" et l'autre "320-y", c'est parce que glut compte les pixels depuis en haut à gauche (et pas en bas à gauche) * en général, alpha est constant. Un coup de calculatrice pour calculer une fois pour toute tan(alpha/2) permet d'économiser le cout de calcul de la fonction "tan" à tous les appels.
J'espère que ca pourra aider quelqu'un un jour, comme de nombreux autres posts de ce forum m'ont aidés!
|
|
|
Cette discussion est classé dans : fonction, alpha, souris, cas, viewheight
Répondre à ce message
Sujets en rapport avec ce message
randomize sous VC++ 6.0 non defini?? comment faire?? [ par petitivnnie ]
En effet je n'ai troué aucune occurence des les headers fournis dans la version 6.0 de visual C++J'aimerai que l'on m'indique comment implenter cette
suivi de souris/fonction gluUnProject [ par LudoBoOz ]
Salut @ tous!!Je rencontre des difficultes a faire suivre un quadrillage au mouvement de la souris. Le quadrillage est centre sur le pointeur de la so
Problème pour récupérer la position de la souris en permanance [ par pcrafale ]
Bonjour,J'ai un problème. Je programme en MFC sous VS.net. J'ai une fenêtre CDialog et je voudrai récupérer en permanence la position du pointeur.J'ar
la souris [ par xbabilone ]
Bonne année a tous .Ma question est simple .On peut recuperer la position de la souris avec la fonction GetCursorPos() de façon simple.Peut on recuper
Utiliser fonction PtInRegion en C [ par mimile87 ]
Bonjour à tous.Je voudrais savoir s'il était possible d'utiliser la fonction PtInRegion en C et comment (lib, includes...)... Pour l'instant je l'ai v
Comment utiliser la souris avec torbo c [ par ElSultan ]
salut!je veux utiliser la souris dans un programme avec turbo C.le principe que j'utilise est de subtituer le gestionnaire originale de l'interruption
coordonnées souris [ par wildTiger ]
salut tout le mondeje suis entrain de réaliser un miniprojet pour la conception d'un robot mais je suis pas forte en programmation. Si klk1 peut m'aid
convertir int en string [ par wasaikos ]
salut a toustout est dans le titre mais je vous mache le travail voici ma fonction:string fonction(int chiffre){ string lettre="P"; string lettr
Appel d'une fonction [ par eldran64 ]
Bonjour, je n'arrive pas à appeler une fonction, c'est la fonction print. C'est une fonction qui doit faire appel à l'accesseur pour afficher la v
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|