begin process at 2010 02 10 05:30:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > PICKING OPENGL(GLUT) / INTERPOLATION BÉZIER,B-SPLINE,CATMULROM

PICKING OPENGL(GLUT) / INTERPOLATION BÉZIER,B-SPLINE,CATMULROM


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :OpenGL Classé sous :opengl, glut, picking, bézier, courbe Niveau :Débutant Date de création :13/08/2005 Date de mise à jour :13/08/2005 19:00:16 Vu / téléchargé :12 334 / 1 811

Auteur : luhtor

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici un programme initialement destiné à comprendre le fonctionnement du Picking standard d'openGL, car ce n'est pas une tâche facile, meme avec le "red-book" à coté de soi. J'ai essayé de respecter la façon dont les logiciels aujourd'hui utilise la sélection. C'est à dire:  
- Cliquer sur un point pour le sélectionner et maintenir cliqué pour le déplacer  
- Maintenir shift appuyé pour enlever ou ajouter un point à une sélection.  
- Maintenir cliqué pour faire une sélection par glissement.  
- Appuyer sur shift et maintenir cliqué, pour ajouter une sélection par glissement à une sélection deja existante.  
- Cliquer sur un point puis le déplacer provoque le déplacement de toute la sélection.  
- Maintenir ctrl appuyé puis cliquer n'importe ou et maintenir cliqué, pour déplacer l'ensemble de la sélection.  

Ce programme montre également 3 méthodes d'approximation et d'interpolation. Ce sont des méthodes pour obtenir des courbes définies mathématiquement à partir d'un nuage de points:  
- Courbe de Bézier (approximation)  
- Courbe B-spline uniforme (approximation)  
- Courbe Catmul-rom (interpolation)  

Normalement, le programme se compile sous linux ou windows. J'utilise Glut pour gérer la fenetre. J'ai essayé de commenter abondamment la partie du programme qui concerne le picking openGL.

Sous linux, je compile avec la commande suivante:
g++ curve.cpp -o curve -L/usr/X11R6/lib -lX11 -lGL -lglut -lGLU

PS: le curseur n'apparait pas sur la screen.
La screen montre une courbe B-spline avec un point triple (reconnaissable).


 Conclusion

Le menu est accessible par le bouton droit de la souris.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • curve.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier31 306 octets
  • Curve.devTélécharger ce fichier [Réservé aux membres club]969 octets
  • Curve.exeTélécharger ce fichier [Réservé aux membres club]758 511 octets

Télécharger le zip


 Historique

13 août 2005 18:51:27 :
Juste une précision.
13 août 2005 19:00:16 :
Une précision.

 Sources du même auteur

Source avec Zip Source avec une capture DÉBUT D'UN MOTEUR PHYSIQUE

 Sources de la même categorie

Source avec Zip JEU DE DAMES 3D par vbclaude
Source avec Zip CHARGEMENT DES TEXTURES EN OPENGL par Jackyzgood
Source avec Zip Source avec une capture OPENGL - UN PEU DE NEIGE... par underprog
Source avec Zip Source avec une capture JEU DE LA VIE 3D OPENGL AVEC GESTION SOURIS par fratleym
Source avec Zip Source avec une capture SPEAD RACER par jngl

 Sources en rapport avec celle ci

Source avec Zip JEU DE DAMES 3D par vbclaude
Source avec Zip Source avec une capture DEMO OPENGL par JeanCodeS
Source avec Zip Source avec une capture SYSTÈME SOLAIRE OPEN GL AVEC BIBLIOTHÈQUE GLUT : 5 PLANETES ... par gabule
Source avec Zip Source avec une capture ATTRACTEURS DE FAMILLES DE CONTRACTIONS EN ÉCRAN DE VEILLE par Forman
Source avec Zip Source avec une capture SUDOKU EN C++ OPENGL, GLUT ET GLUI. par pelenalu

Commentaires et avis

Commentaire de dletozeun le 13/08/2005 19:31:41

salut!;)

Ca doit venir de moi mais j'ai pas du tout compris comment tu traces toutes ces, dans quel ordre tu prends les points pour les tracer, pourquoi les differentes courbes sont differentes, pourquoi des tangentes seulement aux bout de la courbes ....

Par contre au niveau du picking chapeau! C'est exactement ce qu'il me faudra pour un projet futur! :)

Commentaire de luhtor le 13/08/2005 20:01:45

Toutes les courbes utilisent bien sur les points dans un ordre précis, l'ordre indiqué par les numéros :)

Pour le détail, du tracer, les aides sur google sont abondantes, sauf pour Catmulrom. j'ai en effet juste réussi a trouver une écriture matricielle que j'ai précisé en commentaire. D'ailleurs si quelqu'un connait une expression matricielle ou pas des beta-splines, je suis preneur, j'en ai bien une, mais il doit y avoir une erreur.

Ceci dit, souvent c'est une histoire de pondération (de barycentre) ou les masses associées a chaque point est une fonction d'une variable.
Par exemple Bézier:
P(u) = somme( Mi(u) Pi , i de 1 à N) avec "u" entre 0 et 1 et Mi la masse du i ème point et Pi le i ème point. Enfin tu vois le genre.
Les tangentes pour une courbe de Bézier sont connues facilement juste au début et à la fin.

Catmulrom est très intéressant pour ca. Puisque la tangeante au point Pi est suivant la direction (Pi+1, Pi-1). En gros tu traces la droite liant les deux points voisins, ca te donne la direction de la tangeante.

Aller ++

Commentaire de dletozeun le 13/08/2005 23:01:04

mais pourquoi sont elles si différentes...?

Commentaire de luhtor le 13/08/2005 23:16:30

Car les pondérations sont différentes. Bézier utilise les polynomes de Berstein, alors que Catmulrom n'utilise meme pas le principe de barycentre.
La technique de construction est différente, donc forcément, les courbes sont différentes.

Commentaire de monsieur_matou le 31/08/2005 15:50:45

hello,

    bravo et merci pour ton fichier. C'est propre et agréable à lire, je vais tout de suite essayer de m'en servir pour inférer une implémentation pour des patchs triangulaires en dimension 3...

    Oh, une question tout de meme : pourquoi avoir pris la formule analytique de bernstein pour la construction des beziers plutot que l'algo incrémental de De Casteljau ?

Commentaire de luhtor le 03/10/2005 09:14:58

L'algorithme de Casteljau me semblait obscure, j'avais pas envie de compliquer inutilement.

Commentaire de sajaris le 29/04/2006 19:18:49

je trouve le code bien mais assez complexe pour moi. j'aimerais te demander un code simple si possible pour le picking et le deplacement d'un quad, un code tres simple. j'ai deja dessiner mon quad, mais les tutos que je trouve ca et la sont assez complexe pour moi, lorsque j'essai ca marche pas vraiment. alors merci de m'aider en aide.

Commentaire de nahiene le 04/12/2008 17:28:52

J'ai converti ce code en c++ vers le python. Ça permet plus de lisibilité et de mettre en valeur les différences dans l'opengl entre python et c++:

http://www.pythonfrance.com/codes/PICKING-OPENGL-GLUT-INTERPOLATION-BEZIER-SPLINE-CATMULROM-VERSION_48634.aspx

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

glut - openGL [ par loss ] Quels sont les fichiers necessaires pour utiliser glut(je compile avec VC++)?Ou est ce que je peux les telecharger?Merci d avance. Gestion de la souris OpenGL SANS GLUT [ par Xentor ] Comment faire pour connaitre le déplacement de la souris sans utiliser Glut ? (Savoir si on la déplace en haut, à gauche, etc...) J'ai fait plusieurs OpenGl, glut et Dev c++ 4 [ par fabienGL ] J'envoie un message car je passait au moin 3 heures sur le forums j'ai essayé tout ce ki à était di mé rien à faire ... j'utilise DEV C++ 4 et je sui OpenGl & glut avec Dev c++ 4 et WinXP [ par fabienGL ] J'envoie un message car je passait au moin 3 heures sur le forums j'ai essayé tout ce ki à était di mé rien à faire ... j'utilise DEV C++ 4 et j'ai Wi glut et opengl [ par MiTcH37 ] voila ce que j'ai lorsque je compile un prog avec du glut.h...C:\DOCUME~2\Mitch1\LOCALS~1\Temp\cc6Pbaaa.o(.text+0xcc):souris2.cpp: undefined reference opengl [ par MiTcH37 ] J'aimerais bien faire de l'opengl, mais ça marche pas... voila ce que j'ai lorsque je compile un prog avec du glut.h...C:\DOCUME~2\Mitch1\LOCALS~1\Tem devc++ [ par MiTcH37 ] qqun se sert de devc++ ?J'aimerais bien faire de l'opengl, mais ça marche pas... > > > > voila ce que j'ai lorsque je compile un prog avec erreur de compile d une source opengl utilisant glut [ par kribler ] KR!Bl3Rg lerreur suivante qui s afffiche :LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16quelqun pourrai maidermerci d Pb Dev C++ 5 et OpenGl [ par guillaume21 ] J'ai installé glut avec Dev c++ 5. J'ai mis glut.h dans include, glut32.lib dans lib et le dll dans system32 (et mem ds lib lol).J'ai aussi ajouté les Mélanger OpenGL et Glut [ par tintin72 ] SalutJ'aimerai me servir des fonctions d'entrée clavier/souris proposées par Glut, mais j'ai vu que Glut s'initialise avec une fonction main façon C.i


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales