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

 C++ Discussion :

récupèrer point d'un cone/sphère


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut récupèrer point d'un cone/sphère
    Bonsoir,
    dans le cadre d'un projet, nous sommes en train de coder une classe cone et une classe sphère qui permettent de récupèrer dans un vecteur les triangles (ou les quad) composants ces objets.
    Pour le cône nous avons :
    - vecteur de position (0,0,0) // par défaut
    - une hauteur
    - un rayon
    - un nombre de faces (nombre de faces composant notre cercle au sol)

    J'aimerais connaitre la formule qui permet de calculer correctement chaque point de notre cône ?

    Ce que nous appelons "pas" est le nombre de découpe verticale. Pour la sphère et ces découpes horizontales, pour le moment nous nous contentons d'aller de -90 à 90 par pas de 1 soit 180 découpe horizontale.

    Pour le moment j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for(i = 0; i <= 360; i+= pas)
    {
    	var = (i / 180) * M_PI;
    	x = cos(var) * rayon;
    	y = sin(var) * rayon;
    	temp[j] = Vector(x,y,0);
    	/*if (j != 0)
    	{
    		t = Triangle(origine, temp[j-1], temp[j]);
    		this->listeTriangle.push_back(t);
    	}
    	j ++;*/
    }
    Concernant la sphère nous avons :
    - Un vecteur de position initial
    - un rayon
    - le nombre de découpe verticale
    - le nombre de découpe horizontale

    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
     
    for (int k = -90; k < 90; k++)
    {
            var = (k / 180) * M_PI;
            rayon_courant = cos(var) * rayon; 
            z = sin(var) * rayon; 
            for (i = 0; i <= 360; i+= pas)
            {
    		var2 = (i / 180) * M_PI;
    		x = cos(var2) * rayon_courant; 
                          y = sin(var2) * rayon_courant; 
    		temp[j] = Vector(x,y,z);
    		/*if (j != 0)
    		{
    			t = Triangle(origine, temp[j-1], temp[j]);
    			this->listeTriangle.push_back(t);
    		}
    		j ++;*/
            } 
    }
    Est-ce que ces logiques sont justes ou non ?

    Concernant ensuite l'ajoute des triangles correctement, je ne sais pas trop comment m'y prendre de façon à avoir les bons triangles avec les bons points. En gros comment récupèrer les points de chaque triangle dans l'ordre de l'exécution de ma/mes boucle(s).

    Merci à celles et ceux qui pourront nous aider.

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 80
    Par défaut
    Bon, pour commencer, il faut faire un dessin... tu y verras beaucoup plus clair.

    Prenons le cas du cône.
    Supposons qu'il soit maillé en triangles.
    Tu fais p pas de découpe en z, il te faut donc p étages de triangles.
    sur chaque étage, tu découpes en n angulairement, chaque truc nécessite deux triangles, sauf au dernier étage ou il n'y en a qu'un.
    Il faut donc commencer par allouer un vecteur de (p-1)*n*2 + n triangles. (modulo une erreur de ma part ) pour éviter de faire plein de push_back (très coûteux sur un vecteur)...

    là ya une image normalement...



    ensuite ton parcours me paraît bon (z croissant puis theta croissant)
    A chaque fois tu calcules les coordonnées des triangles et tu les mets dans ton vecteur.

    Après, en matière de stockage, ce serait peut être mieux de stocker seulement les points des triangles et un vecteur d'indices, ça dépend de ce dont tu as besoin.

    Parce que là chaque point est partagé par 6 triangles, dont tu perds beaucoup en mémoire.

Discussions similaires

  1. Récupérer point de diffusion des CA
    Par ryu20 dans le forum Sécurité
    Réponses: 1
    Dernier message: 30/07/2013, 16h02
  2. Calcul de points sur un cone
    Par lenoil dans le forum Mathématiques
    Réponses: 1
    Dernier message: 21/03/2008, 15h44
  3. [GRAPHIQUE] Récupérer les coordonnées d'un point
    Par freud dans le forum Composants VCL
    Réponses: 6
    Dernier message: 29/09/2005, 12h31
  4. Récupérer la point 3d le plus loin
    Par nans80 dans le forum OpenGL
    Réponses: 4
    Dernier message: 15/07/2004, 20h51
  5. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2003, 21h18

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