Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
883 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  colorer une carte geographique creé par openGL C++

 

Sujet(s) à lire :
    - Visual C++
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

colorer une carte geographique creé par openGL C++

n°2108738
encours
Posté le 30-10-2011 à 07:19:56  profilanswer
 

bonsoir
j'ai dessiner la carte geographique de mon pays avec openGL sous visualstudion10
j'ai utilisé principalement les fonctions suivantes :
celle ci pour les courbes :
 
 
Code C++ :
 
   

Code :
  1. glEnable(GL_MAP1_VERTEX_3);
  2.     GLfloat ctrlpoints[4][3] =
  3.     {{ 406, 19, 0.0}, { 413, 17, 0.0},
  4.     { 418, 13, 0.0}, { 422, 13, 0.0}};
  5.     glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]);
  6.     glBegin(GL_LINE_STRIP);
  7.     int n = 60 ;
  8.     for (int i = 0; i <= n; i++)
  9.         glEvalCoord1f((GLfloat) i/((float)n));
  10.     glEnd();


 
 
 
et celle ci pour les droites
 
 
   

Code :
  1. glBegin(GL_LINES);
  2.     glVertex2f( 406, 19);
  3.     glVertex2f( 385,77);
  4.     glEnd();


 
 
 
et ca marché
alors je veux colorer la carte,
pour par la suite faire una animation avec
mais puisqu'elle n'est pas un polygome ou triangle ou ...
je sais pas comment
sachant que les courbes et les droites sont attaché et fermé
 
si vous avez une idéé
 
merci

mood
Publicité
Posté le 30-10-2011 à 07:19:56  profilanswer
 

n°2108761
encours
Posté le 30-10-2011 à 12:47:44  profilanswer
 

je veux colorer la surface interieur de la carte ca veut dire la surface entouré par ces courbes et droites
 
merci

n°2108791
xilebo
noone
Posté le 30-10-2011 à 17:47:14  profilanswer
 

Pour remplir le contenu d'une surface en opengl, il faut créer des éléments acceptant des textures ( ex : triangle ou quadrilatère ).  
 
Il faut donc que tu construises ta figure géométrique à partir de triangles ou quad , et que tu appliques ensuite la texture dessus.
 
 
ex pour faire un quadrilatère  
 

Code :
  1. glBegin( GL_QUADS );
  2. glTexCoord2f( u0, v0 ); glVertex3f( x0, y0, 0.0f );
  3. glTexCoord2f( u0, v1 ); glVertex3f( x0, y1, 0.0f );
  4. glTexCoord2f( u1, v0 ); glVertex3f( x1, y0, 0.0f );
  5. glEnd();


 
( remplace les coordonnées par les tiennes )
glVertex3f permet de définir les coordonnées de ta forme, et glTexCoord2f permet de définir comment tu appliques la texture sur ton quad.
 
Ne pas oublier que ce ne sont pas les coordonnées dans la scène, mais les coordonnées propres à ton objet. Il te faut ensuite appliquer des matrices de transformations ( projection / homothétie / rotation ) pour placer ton objet dans la scène.
 
Ensuite, en ce qui concerne la texture, regarde du coté des fonctions :
 - glGenTextures  
 - glBindTexture
 - glTexImage2D
 
Il est peut etre possible de remplir une surface sans passer par une texture, mais je ne connais pas bien opengl, en tout cas, avec une texture, ca marchera forcement ( tu peux faire une texture 16x16 de la couleur que tu veux et l'appliquer en mode TILE )
 
 

n°2108911
encours
Posté le 31-10-2011 à 15:46:36  profilanswer
 

merci pour votre reponse
 

Citation :

Pour remplir le contenu d'une surface en opengl, il faut créer des éléments acceptant des textures ( ex : triangle ou quadrilatère ).  
 
Il faut donc que tu construises ta figure géométrique à partir de triangles ou quad , et que tu appliques ensuite la texture dessus.
 


mais la carte que j'ai dessiner contient des courbes (j'ai dessiner les courbes avec le morceau de code en haut (bezier)  
 
et en utilisant triangle et ... je peux pas faire des courbes
 
alors que faire  
 
merci

n°2108952
theshockwa​ve
I work at a firm named Koslow
Posté le 31-10-2011 à 19:42:36  profilanswer
 

générer une surface à partir du contour doit être un problème retourné dans tous les sens.
J'imagine que tu dois pouvoir trouver de la littérature à ce sujet, peut-être en cherchant de la génération de surface à partir d'un nuage de point (et tu échantillonnes toi-même tes courbes de bézier)


---------------
last.fm
n°2108955
encours
Posté le 31-10-2011 à 20:50:51  profilanswer
 

j'ai pas compris ce que tu veux dire

n°2108976
theshockwa​ve
I work at a firm named Koslow
Posté le 31-10-2011 à 22:56:24  profilanswer
 

Ce que tu cheches à faire, c'est trianguler un polygone concave.
 
en faisant une recherche sur la triangulation de polygones concaves grâce à notre ami google tu pourras trouver en premier résultat une discussion où quelqu'un finit par donner son code pour le faire (et il file même le header avec)
 
Pour pouvoir te servir de ce que ce type a fait, vu qu'il ne traite pas de courbes de bézier, il faudra que tu convertisse tes courbes en points. Ca se fait simplement en échantillonnant tes courbes.
 
Tu te débrouilles pour stockerle résultat en vertex buffer + index buffer. Tu fais un rendu des triangles résultants avec la glColor qui va bien et ca devrait faire le job.


---------------
last.fm
n°2108980
breizhbugs
Posté le 31-10-2011 à 23:31:24  profilanswer
 

si c'est en 2D, peut-il utiliser un algo de remplissage du même style que le pot de peinture sous paint?


---------------
Seul Google le sait...
n°2108982
theshockwa​ve
I work at a firm named Koslow
Posté le 31-10-2011 à 23:42:55  profilanswer
 

breizhbugs a écrit :

si c'est en 2D, peut-il utiliser un algo de remplissage du même style que le pot de peinture sous paint?


Pour des questions de facilité d'adaptation à un changement de résolution, c'est plus sympa de faire des triangles, mais oui, dans l'absolu, ca pourrait très bien être fait avec un simple algo de remplissage.


---------------
last.fm
n°2108984
encours
Posté le 01-11-2011 à 01:17:23  profilanswer
 

merci pour les indications et les orientations
je viens de savoir qu'il me reste beaucoup de travail a faire, vu que je suis debutant dans le graphisme
l'idée de breizhbugs, ca a l'air plus simple meme si elle est d'aprés theshockwave moins performante
pouvez vous me donnez qlq idée domment l'implementer
 
 
merci

mood
Publicité
Posté le 01-11-2011 à 01:17:23  profilanswer
 

n°2109022
breizhbugs
Posté le 01-11-2011 à 10:56:30  profilanswer
 

il y a http://fr.wikipedia.org/wiki/Algor [...] _diffusion


---------------
Seul Google le sait...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  colorer une carte geographique creé par openGL C++

 

Sujets relatifs
[ Divers / C ] Ecrire pour un afficheur LCD[C] Modifier un tableau existant ... pour bouger un pion !
[C# / .Net] Migration OS 32Bits vers OS 64Bits. Quid des Perfs?[C#] FormView, edit/insert mode
[C] programme cherche les racines des polynomes[C] trouver la longueur de la plus longue suite decroissante en C
C++, Compter des caractères ...Linux C/C++ broadcast UDP sur machine sans gateway
Convolution de 2 tableaux unidimensionnels avec FFTW C++ 
Plus de sujets relatifs à : colorer une carte geographique creé par openGL C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR