J'essaye de rendre quelques graphiques 3d avec un tas de tetrahedra. J'essaie de comprendre comment faire pivoter un tétraèdre de telle sorte qu'il soit parfaitement face à face avec un autre tétraèdre. Si cela est déroutant, de multiples tétraèdres se rencontrant face à face ressembleraient à this. J'utilise OpenGL pour faire pivoter des objets par programme, donc je ne peux tourner que sur l'un des trois axes à la fois. Par exemple, je peux tourner dans le sens horaire 20 degrés sur X, puis dans le sens antihoraire 45 degrés sur Z, etc.Rotation de Tetrehedra pour la tessellation 3D
Je comprends l'aspect programmation de ce programme (en utilisant la fonction glRotatef() d'OpenGL pour tourner sur un axe à la fois), mais je suis plus intéressé par les angles spécifiques nécessaires pour chaque axe afin de réaliser la tessellation 3d.
Merci pour toute aide, laissez-moi savoir si vous avez besoin de plus de précisions.
Merci Damon. Le problème est que j'essaie d'ajouter et de supprimer des tétraèdres supplémentaires au moment de l'exécution (cela devrait probablement l'être), et chaque tétraèdre doit être associé à exactement une instance d'un objet Tetrahedron (pour que je puisse appeler tetra.draw()). Est-ce que ça a du sens? Des modifications possibles à votre solution intéressante? –
Fondamentalement, on pourrait toujours faire la même chose, tant qu'il y a toujours quelque chose à se connecter. Pour avoir une instance séparée, il suffit de dupliquer 3 sommets existants (ceux sur le visage où vous voulez vous connecter), et de calculer le 4ème comme décrit ci-dessus. La longueur de l'arête ne peut pas changer pendant l'exécution, ou vous ne pouvez pas les connecter correctement, donc la hauteur reste une constante précompatible. – Damon
Donc, je devrais probablement toujours créer une instance d'un Tetrahedron en passant au constructeur l'instance d'un tétraèdre adjacent, et le bord spécifique auquel le nouveau est adjacent. Cela semble acceptable. Merci! –