MORPION 3D 2JOUEURS OPENGL (VC++ )

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 2 nov. 2003 à 13:37
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 17 nov. 2003 à 16:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17588-morpion-3d-2joueurs-opengl-vc

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
17 nov. 2003 à 16:42
ben vi ds un plan oui, mais moi j'ai axtrapolé depuis ça (que je connais) pr fonctioner ds la 3D, et ça marche, rien à dire.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 nov. 2003 à 13:06
Kirua: j'ai lu rapidement tes explications (je n'ai jamais codé avec opengl) et je demande si une équation de la forme y=ax+b est bien l'équation d'une droite dans un espace de dimension 3. A mon avis ce serait plutot un plan...
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
6 nov. 2003 à 22:51
Félicitations pour ton code, c'est super ;)
gillig Messages postés 32 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 4 décembre 2003
3 nov. 2003 à 17:47
J'ai plus simple : dans la fonction RePaint() juste après la ligne
gluLookAt(x,y,z,vx,vy,vz,upx,upy,upz); //la camera

ajouter :
static double angle = 0;
angle += 1;
glRotated(angle, 0, 1, 0);

(les rotations sont fournies dans opengl...)
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
2 nov. 2003 à 18:18
non on a pas vu la trigo ni la geometrie ds l'espace . mais j'vais essayer de demerder sans . puis avec tes explications sa sera + simple .
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 nov. 2003 à 16:07
comme ça au moins tu sais que c'est pas préfourni dans OpenGL ^^
tu as vu cette matière en classe? (trigo et géométrie dans l'espace) En fait, la trigono ds l'espace on la voit pas en cours, mais tu peux facilement la déduire toi-même, tu auras besoin de pythagore aussi, de merveilleux amis, rêve ta vie en couleur, c'est la recette du bonheur, des triangles, rectangles, partout virevoletent... ;-)
cs_mat74 Messages postés 241 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 16 juin 2010
2 nov. 2003 à 14:43
merci pr les explications
j'ai pas tt compris mais maintenat j'ai l'idée .
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 nov. 2003 à 13:37
salut !!

pour faire tourner la caméra librement autour d'un point, il te faut... de sérieuses bases en trigonométrie tri-dimensionnelle, un crayon, bcp de papier.

j'avais entrepris une classe de caméra de ce genre pour mon jeu dee serpent en 3D (sur ce site),l'idée était: (et je pense que c'est ce que tu veux) pouvoir bouger la caméra sur une demi-sphere dont le centre serait le centre du jeu, la caméra pointant tjs vers ce centre.

ma classe... a échoué ^^ et je sais pq, parce que depuis j'ai fait bcp d'autres programmes, dont qq simulations physiques qui m'ont mis la puce à l'oreille.

tu peux t'inspirer de ma classe, tu la trouveras dnas ma fiche code sources, C++. ce qu'il faut ajouter: une batterie de if, parce que les sin / cos donnent des résultats différents dans différentes sections de la sphere (si tu as environ 15 ans tu devrais comprendre ça, c'esr la matière de cette année)

pour la théorie en qq lignes:

gluLookAt( POINT 1, POINT 2, POINT 3);

sauf erreur, le point 1, est la position de la caméra (de l'oeil), c'est de ce point que tu dois déterminer les coordonnées, à partir de la trigono ds l'espace

POINT 2 est le point vers lequel la caméra regarde: c'est constant: le centre de la scène

POINT 3 est le vecteur qui indique le haut de ta caméra, et pour ça, il te faut des notions de géométrie ds l'espace, ça c'est le programme des 15-16 ans je pense, j'y était l'année passée. Pourquoi? jusque là, on avait 2 points, si on trace une droite par ces points, et qu'on place la caméra sur le point 2, tu vois bien que la caméra peut etre orientée dans tous les sens sur cette droite! à l'envers, de coté etc...
il faut donc indiquer la direction vers le haut de la caméra, comme qui dirait les coordonnées du bout d'une antenne plantée perpendiculairement dans cette caméra.

Alors quoi? tu as deux points, donc une droite, tu trouves l'équation de cette droite (si tu as vu ça, tu vas rire tellement c'est simple, sinon google, expression analytique de droite, ça doit etre vite fait.

Bien, tu as cette équation (je te propose de mettre ça dans une struct:

struct droite{ float a, b; };

en effet, l'équation est de la forme y = ax + b

le point 3 a ses coord. sur la perpendiculaire à cette droite, passant par les coord. de la caméra, FORT BIEN on a un point, et on peut déterminer la pente:

la pente (a) = -1/a (le a de la première droite)

tu as donc un système à une inconnue:

y = ax + b
coord. y de la caméra = le a connu . coord. x de la caméra + b

tu résous ça de façon rapide en C++ (tu isoles b, ça te donne une expression très simple)

tu as maintenant l'expression de la droite finale. il ne te reste plus qu'à trouver un point quelconque de cette droit, mais du bon côté de la droite :-)
et là, ... j'ai pas encore fait le raisonnement, puisque je viens de te tapper ça a chaud, c'est là ce que j'aurais du faire ds ma classe du serpent 3D, seulement, je me suis limité à la trigono, et je n'ai pas géré le vecteur d'orientation, voilà pour moi ;-)
Rejoignez-nous