Opengl et souris. [Résolu]

Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Dernière intervention
26 juin 2008
- - Dernière réponse : cs_windsurfer
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Dernière intervention
26 juin 2008
- 26 juin 2008 à 12:36
salut

Je travaille sous opengl avec Delphi.
Dans ma fenêtre opengl, il y a un point A(x;y;z) dans le repère 3D. Mon but est de pouvoir le déplacer à la souris dans un plan parallèle à l'écran.

 1. Je clique à l'écran avec la souris et j'ai besoin de savoir si le point est bien en dessous.
 2. Je déplace la souris et le point doit suivre le curseur dans un plan parallèle au plan de l'écran.

L'idéal serait de pouvoir récupérer les coordonnées du point de l'écran sur lequel j'ai cliqué avec des coordonnées données dans le même repère que le point A pour définir un vecteur directeur du déplacement dans le plan de l'écran.

Il me semble qu'il est question de feedback mais ma seule documentation à ce sujet et en Anglais technique et dans un langage (du C certainement) que je ne maitrise pas du tout.

Quelqu'un peut-il éclairer ma lanterne ? Merci.

toto le windsurfer
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Dernière intervention
26 juin 2008
3
Merci
Bon, je me suis replongé dans les matrices de transformation et j'ai fini par trouver... Si ça interesse quelqu'un par la suite, je sais comment donner les coordonnées 3D du curseur de la souris par rapport au repère 3d et inversement donner les coordonnées 2d d'un point du repere 3D sur ma feuille.

Du coup on a pas besoin d'utiliser glfwGetMousePos. les onmousemove on mouseclick de la feuille suffisent.

Merci.

toto le windsurfer

Merci cs_windsurfer 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_windsurfer
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
glfwGetMousePos()

ou

http://www.opengl.org/resources/libraries/glut/spec3/node50.html

<hr size="2" width="100%" />
Commenter la réponse de f0xi
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Dernière intervention
26 juin 2008
0
Merci
Merci...... mais :

1. Elle ne donne que deux coordonnées donc je ne suis pas dans le même repère 3D de mon point. Comment passer d'un repère à l'autre ?

2. Je ne parviens pas à adapter le code ("Void", int x ...) en delphi 7 .

A l'aide.

toto le windsurfer
Commenter la réponse de cs_windsurfer
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
procedure glfwGetMousePos(out X, Y: integer);

"void" veux dire qu'on attend aucun type de retour.

void MaFonction()
{
}

se traduit en delphi par

procedure MaFonction;
begin
end;

au contraitre de ceci :

int MaFonction()
{
}

qui se traduit par :

function MaFonction: integer;
begin
end;

cela viens du fait qu'en C/C++ et autres langage C Like, on declare les types avant les identifiants contrairement a Delphi ou l'on declare l'identifiant puis le type (logique dans un langage de programmation proche du langage humain).

<hr size="2" width="100%" />
Commenter la réponse de f0xi
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Dernière intervention
26 juin 2008
0
Merci
Ok, déjà ça m'aide bien, je parviens à récupérer 2 coordonnées x et y de mon curseur.

Cependant comment passer du repère de la fenêtre active (repère dont on me parle partout dans mes docs mais que je n'ai vu défini nul part clairement) au repère de l'espace dans lequel je connais A ? Quel est le lien entre les deux ?

merci

toto le boulet
Commenter la réponse de cs_windsurfer
Messages postés
459
Date d'inscription
lundi 19 avril 2004
Dernière intervention
8 avril 2009
0
Merci
En fait tu as besoin des coordonnées écran de ton truc 3D ( et là... demande aux pros de l'openGL). donc quand tu cliques sur l'écran il faut alors vérifier que la position de ta souris se situe à moins de "tant" de la position du centre du mobile projeté sur l'écran (cercle de détection).

Tu vois le principe ?

Think Twice, Code Once !
Commenter la réponse de DeltaFX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.