Opengl et souris.

Résolu
cs_windsurfer Messages postés 20 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 26 juin 2008 - 20 juin 2008 à 19:10
cs_windsurfer Messages postés 20 Date d'inscription vendredi 30 janvier 2004 Statut Membre 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

6 réponses

cs_windsurfer Messages postés 20 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 26 juin 2008 1
26 juin 2008 à 12:36
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
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 juin 2008 à 13:57
glfwGetMousePos()

ou

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

<hr size="2" width="100%" />
0
cs_windsurfer Messages postés 20 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 26 juin 2008 1
21 juin 2008 à 15:06
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
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
22 juin 2008 à 05:33
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%" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_windsurfer Messages postés 20 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 26 juin 2008 1
22 juin 2008 à 21:43
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
0
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
26 juin 2008 à 11:08
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 !
0
Rejoignez-nous