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 :
Concernant la sphère nous avons :
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 ++;*/ }
- Un vecteur de position initial
- un rayon
- le nombre de découpe verticale
- le nombre de découpe horizontale
Est-ce que ces logiques sont justes ou 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
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 ++;*/ } }
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.
Partager