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

SL & STL C++ Discussion :

Bench avec différents ordres d'insertion


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 61
    Points
    61
    Par défaut Bench avec différents ordres d'insertion
    Bonjour,
    j'ai un projet en C++, que je connais pas du tout, et je dois utiliser CGAL. Est-ce possible que qn m'aide à cette réalisation (j'ai jours, je vous dis même pas comment je me sens). Voici le sujet :

    * Engendrer dans un tableau N points aléatoires dans un carré.
    * Construire une première triangulation de Delaunay en insérant ces points dans l'ordre (aléatoire) du tableau.
    * Recommencer après avoir trié le tableau en x
    * Engendrer dans un tableau N points sur la spirale t*(cos(t), sin(t)) pour t dans [0,10.Pi].
    * Construire une triangulation de Delaunay en insérant ces points dans l'ordre la spirale (intérieur vers extérieur).
    * Recommencer dans l'ordre inverse
    * Recommencer avec des points aléatoires sur la spirale.

    Pour tous ces calculs, mesurer les temps d'execution pour N variant entre 1000 et 1 000 000 (si les temps de calculs restent raisonnable, moins de 100 secondes par exemple). Vous comparerez aussi le Delaunay simple (localisation par marche) avec la hiérarchie de Delaunay. Enfin, vous ferez des tests avec differents noyaux CGAL. Vous presenterez les resultats dans des tableaux de synthèse, permettant de comparer facilement les resultats et de les commenter pour la soutenance.


    et voici le squelette donné :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <iostream>
    #include <vector>
    #include <CGAL/Cartesian.h>
    #include <CGAL/Point_2.h>
    #include <CGAL/Delaunay_triangulation_2.h>
    #include <CGAL/IO/Qt_widget_Delaunay_triangulation_2.h>
    #include <CGAL/IO/Qt_widget.h>
    #include <CGAL/IO/Qt_widget_layer.h>
    #include <qapplication.h>
     
    typedef CGAL::Cartesian<double>		    K;
    typedef CGAL::Point_2<K> 		    Point;
    typedef CGAL::Delaunay_triangulation_2<K>            Delaunay;
     
     
    class My_layer : public CGAL::Qt_widget_layer{
      void draw(){
        ;
      }
    };
     
    class My_window : public CGAL::Qt_widget {
    public:
      My_window(int x, int y)
      {
        resize(x,y);
        attach(&layer);
      };
    private:
      //this method is called when the user presses the mouse
      void mousePressEvent(QMouseEvent *e)
      {
        Qt_widget::mousePressEvent(e);
     
        /////////////////////////////////////////////////////////////
        //  C'EST ICI QUE CA SE PASSE QUAND ON CLIQUE !
        //
          exit(1);
        /////////////////////////////////////////////////////////////
     
        redraw();
      }
      My_layer layer;
    };
     
    int main( int argc, char **argv )
    {
        QApplication app( argc, argv );
        My_window *W = new My_window(400,400);
        app.setMainWidget(W);
        W->show();
        W->set_window(-1, 1, -1, 1);
     
        int Nb_points;
     
        std::cout<<" Nombre de points ? "<<std::endl;
        std::cin>>Nb_points;
     
        std::vector<Point> points(Nb_points);
     
        for( int i = 0 ; i<Nb_points;++i) {
          double x= (Nb_points-i) / (double)Nb_points;
          points[i] = Point(x,x*x);
        }
     
        Delaunay dt1;
        for( int i = 0 ; i<Nb_points;++i) {
          dt1.insert( points[i] );
        }
        *W << CGAL::GREEN<<dt1;
        std::cout<<Nb_points<<" points "<<std::endl;
     
        return app.exec();
    }

    Aidez-moi...SVP !!!

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Et qu'es ce que tu veut?

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 61
    Points
    61
    Par défaut
    toute aide me sera précieuse, étant doné que j'ai aucune idée sur toute la ligne, comment démarrer, ce qu'il faut faire (ou comment) pour atteindre ces points demandés, ou peut être quel est exactement le problème...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par micanti Voir le message
    toute aide me sera précieuse, étant doné que j'ai aucune idée sur toute la ligne, comment démarrer, ce qu'il faut faire (ou comment) pour atteindre ces points demandés, ou peut être quel est exactement le problème...
    Pour commencer respire un bon coup.
    Ton exo est assez simple et assez bien découpé..
    * Engendrer dans un tableau N points aléatoires dans un carré.
    * Construire une première triangulation de Delaunay en insérant ces points dans l'ordre (aléatoire) du tableau.
    * Recommencer après avoir trié le tableau en x
    * Engendrer dans un tableau N points sur la spirale t*(cos(t), sin(t)) pour t dans [0,10.Pi].
    * Construire une triangulation de Delaunay en insérant ces points dans l'ordre la spirale (intérieur vers extérieur).
    * Recommencer dans l'ordre inverse
    * Recommencer avec des points aléatoires sur la spirale.
    Ca reviens à faire 5 executable different en utilisant ton squelette.
    sachant que ce qui est important est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    std::cout<<" Nombre de points ? "<<std::endl;
        std::cin>>Nb_points;
     
        std::vector<Point> points(Nb_points);
     
        for( int i = 0 ; i<Nb_points;++i) {
          double x= (Nb_points-i) / (double)Nb_points;
          points[i] = Point(x,x*x);
        }
     
        Delaunay dt1;
        for( int i = 0 ; i<Nb_points;++i) {
          dt1.insert( points[i] );
        }
    Mais je ne vais pas faire ton code.
    Alors explique ce que tu ne comprend pas

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 61
    Points
    61
    Par défaut
    je te remercie énormément pour tes réponses rapides. en fait, j'ai trouvé un tutoriel super, je vois mieux ce qu'il faut faire. fin de compte c'est pas trop compliqué, mais je vais perdre un temps énorme à cause de la sythaxe C++ pour tous ce qui est itération etc ... alors qu'en Java ça serait en un clin d'oeil ... . Ensuite interpréter les résultats et c'est bon !
    je crois que c'est plutôt la synthaxe qui m'a foutu la trouille et une librairie qui m'est inconnu.
    ca devrait aller mieux maintenant.

    Je te remercie bcp pour ton aide !!

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 61
    Points
    61
    Par défaut
    Bon, beaucoup mieux maintenant tous les points sont faits, à part une question :

    "Vous comparerez aussi le Delaunay simple (localisation par marche) avec la hiérarchie de Delaunay. Enfin, vous ferez des tests avec differents noyaux CGAL."

    Je sais pas vraiment ce qu'il faut faire maintenant ... (et lequel choisir)


    (
    en plus, je crois avoir utilisé le Delaunay simple, non ?

    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
    typedef CGAL::Cartesian<double>		    			K;
    typedef CGAL::Point_2<K> 		            		     Point;
    typedef CGAL::Triangulation_vertex_base_2<K>            Vbb;
    typedef CGAL::Triangulation_hierarchy_vertex_base_2<Vbb> 	Vb;
    typedef CGAL::Triangulation_face_base_2<K>               	Fb;
    typedef CGAL::Triangulation_data_structure_2<Vb,Fb>        Tds;
    typedef CGAL::Delaunay_triangulation_2<K,Tds>                 Dt;
    typedef CGAL::Triangulation_hierarchy_2<Dt>              	 Delaunay;
    ...
        Delaunay dt1;
        timer.reset();timer.start();
        for( int i = 0 ; i<Nb_points;++i) {
          dt1.insert(points[i]);
        }
    ...
    )

    Merci d'avance !

  7. #7
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Citation Envoyé par micanti Voir le message
    je vais perdre un temps énorme à cause de la syntaxe C++ pour tout ce qui est itération etc ... alors qu'en Java ça serait en un clin d'oeil ...
    C'est sur, c'est tellement différent... Je comprends que tu sois déboussolé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec l'ordre d'insertion des lignes avec BULK INSERT
    Par TomtomGesti dans le forum Développement
    Réponses: 3
    Dernier message: 18/07/2014, 16h50
  2. [MySQL] Clause order by avec l'ordre d'insertion des données
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/01/2011, 11h51
  3. autoscale d'un graphique avec courbes de différents ordre de grandeur
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 28/06/2010, 14h04
  4. Réponses: 3
    Dernier message: 29/08/2007, 20h43
  5. collection avec l'ordre d'insertion
    Par keopsk dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2006, 20h13

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