IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Dessin d'objets 2D en cliquer-deplacer


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut Dessin d'objets 2D en cliquer-deplacer
    Salut a tous,

    Je suis actuellement en stage et mon sujet c'est un editeur 2D/3D a coder en C++ et utilisant openGL.
    J'avais bien entame un premier jet mais apparemment ca ne convient pas trop a mon tuteur donc je dois repartir de presque 0

    Enfin bref, mon probleme du moment c'est la 2D :
    - comment dessiner un rectangle ou un disque en cliquer-deplacer (en gros, on clique une fois pour creer le sommet haut-gauche du rectangle ou le centre du cercle, on bouge la souris et la taille de l'objet change en fonction de la position puis, sur un deuxieme clic, on fixe la taille definitve de l'objet--->en gros c'est ce que fait n'importe quel logiciel de dessin)
    - comment dessiner un disque partiel suivant le meme principe (je sais qu'il y a une fonction permettant de dessiner un disque partiel mais comment l'utiliser dans un principe de cliquer-deplacer).

    Pour l'instant ma fenetre 2D est en vue ortho (glOrtho) et j'ai deja reussi a implementer une fonction de drag and drop d'objets donc je pense que le principe est sensiblement identique mais il me manque un bout du puzzle que je n'arrive pas a resoudre.
    Je pense que je dois creer une structure point2D pour gerer tout en terme de vertex et non d'objets mais c'est apres que je cale.
    Je suis tres chiant je sais mais si vous pouviez agrementer vos reponses d'exemples de code et/ou de liens vers des tutoriaux traitant de ce genre de problemes, ce serait tres sympa.

    Derniere info enfin, comme je dois realiser une appli la plus portable possible, je n'utilise pas les MFC et essaie de tout realiser en C et GLUT (donc j'aimerai avoir a ne pas implementer de classes).

    Voila, merci de l'attention que vous pourrez porter a mes petits soucis

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    et hop le petit lien qui tue tout : http://glinfrench.apinc.org/
    y'a une section sur la création d'un modeleur 3D qui utilise GLUT et tout ce qu'il faut... bonne lecture...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    Je le connais déjà ce lien^^.

    Je m'intéresse de très près à ce truc d'ailleurs mais le problème c'est que je dois réaliser si possible une appli sans classes, or ce truc en est bourré.
    Donc si j'ai pas le choix, je fouinerai dedans et essaierai d'extraire les infos qu'il me faut des classes mais bon, s'il existe un truc tout basique en C, ça me ferait gagner du temps.

    Merci quand même de t'être donné la peine de répondre, c'est sympa !

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    Allez ?

    Personne pour faire sa BA de 2005 ?

    Sioupleeeeeeez !!!!!!

    Sinon bonne annee a tous accessoirement !

    J'espere que vous avez bien profite !

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Par défaut
    rien de special pour ta question c est comme pour faire un jeu tu fais une boucle et a chaque iteration tu redessine tout lecran

    par exemple pour ton rectangle tu garde le curseur lors du clic et sa valeur actuelle et a chaq frame tu redessine ton rectangle sur tout le reste et ce jusqu a c k on lache la souris
    sur une boucle ca donne lors de chaq frame :
    on suppose ton outil rectangle selectionné , lors d un clic tu met le curseur sur une variable ancien_cursor(sous windows y a le type POINT<=>{x,y}) et tu met une variable rectangle_actif a 1
    et sur chaque frame tant que rectangle_actif est a 1 {
    - si la souris n est pas cliquée rectangle_actif=0 et tu enregistre ton rectangle (il devient definitif)
    - sinon tu dessine un rectangle entre ancien_cur et le curseur actuel
    bien sur tout ca apres avoir redessiné tout le reste (ton rectangle sera toujours en premier plan

    la tu cliq -> tu deplace -> tu lache comme pour le rectangle du paint . pour la version à 2 clics n oublie pas k il faut attendre ke l utilisateur lache le bouton de la souris avant de chercher un autre cliq

    sinon pour ton disque par exemple il te fo definir une fonction qui transforme un vecteur de deplacement (x,y) en un angle et ca dépend de comment toi tu veux l utilisation d ton prog (le plus simple est de ne considérer ke le deplacement horizontal : angle=new_y - old_y)
    sinon c le meme principe

    sinon sans les structures c presque impossible mé pkoi tu di que c+opengl => pas de classes ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut
    C'etait bien comme ca que je l'envisageai, je voulais juste voir si y'avait pas une fonction deja existante permettant de simplifier cette etape.

    Mon appli je dois la faire la plus portable possible, donc si je commence a creer des classes, c'est du C++ (c'est de l'objet) donc c'est moins portable (meme si c'est beaucoup plus pratique). Un compilateur C++ sera capable de compiler du C et du C++ mais un compilateur pur C risque de faire la gueule si je lui sors une classe C++. En gros, mon appli doit pouvoir tourner sur un maximum de plateformes de developpement avec un minimum de modifications. Donc si -situation improbable- un gars veut pouvoir la faire tourner en pur C et non en C++ alors qu'il y a plein d'objets dedans, je lui souhaite bien du courage.

    En tous cas, merci pour ta reponse.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 40
    Par défaut
    le C PERMET l utilisation des structures la seule vraie difference avec les struct du C++ (ou les class c un peu pareil) c est qu une struct de C ne peut pas comporter de fonctions
    donc tes types seront des structures sans fonctions (ni constructeur, ni....) rien qu une struct de C (avec typedef struct{...} nom_du_type; ) et les fonctions de manipulation seront externes a la struct

  8. #8
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut
    la plupart du temps tu peux convertir les class C++ en struct C , c est sur l a pas de constructeur, destructeur , ni de membre private ou protected mais bon dans les cas simples ( pas cinquante classes qui s herite les unes les autres) ca fonctionne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    // cc+.cpp : définit le point d'entrée pour l'application console.
    //
     
    #include "stdafx.h"
     
     
    class TestCpp {
     
    public:
    	int a,b,c;
     
    	void Setabc(int x,int y,int z) {
     
    		a=x;
    		b=y;
    		c=z;
     
    	}
    };
     
     
    struct Testc {
     
    	int a,b,c;
    	void Setabc(int x,int y,int z) {
     
    		a=x;
    		b=y;
    		c=z;
     
    	}
     
    };
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Testc c;
    	TestCpp cpp;
     
    	c.Setabc(1,2,3);
    	cpp.Setabc(4,5,6);
    	return 0;
    }

  9. #9
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    attention, ca ca passe avec un compilo C++ mais pas avec un compilo C...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Par défaut Merci
    Merci a tous pour votre aide, j'ai reussi pour le rectangle. Maintenant c'est au tour du disque^^.

Discussions similaires

  1. dessiner deux objets l'un sur l'autre
    Par info_sara dans le forum OpenGL
    Réponses: 5
    Dernier message: 06/06/2010, 20h57
  2. Réponses: 3
    Dernier message: 21/04/2007, 22h02
  3. Dessiner des objets plus complexes avec OpenGL
    Par Premium dans le forum OpenGL
    Réponses: 18
    Dernier message: 21/11/2006, 17h55
  4. Dessiner hors objet
    Par Speed41 dans le forum Delphi
    Réponses: 2
    Dernier message: 12/10/2006, 19h33
  5. Réponses: 2
    Dernier message: 30/05/2006, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo