Plop all,
J’essaie, à partir d’un polyèdre, de trouver les vecteurs normaux à chaque surface, orientés vers l’extérieur. Mais j’ai quelques difficultés pour trouver un algorithme convenable.
Une méthode qui fonctionne pour les polyèdres convexes :
- Calculer le vecteur normal de la surface concernéee
- Faire le produit scalaire de ce vecteur, avec le vecteur partant de la moyenne des sommets du polyèdre (le centre, quoi :p), vers un des points de la surface.
- Si le produit scalaire est positif, le vecteur normal est dans le bon sens. S’il est négatif, on prend bien sûr l’opposé du vecteur calculé.
Et on réitère pour chaque surface.
Mais cette méthode ne fonctionne que pour les polyèdres convexes. Pour l’étendre aux polyèdres non convexes, j’ai pensé “découper” le polyèdre en polyèdre plus petits, et convexes. Mais le découpage doit être fait convenablement… Et c’est là que le bât blesse.
Je suis preneur de toute idée, quelle que soit son origine, quelle que soit sa teneur. Les pires conneries ont parfois engendré les plus grandes inventions. Vous pouvez me conseiller sur ce fameux découpage, sur la méthode pour trouver ces vecteurs normaux, dans le cadre d’un polyèdre non convexe. (Et même si cette méthode ne fonctionne que dans le cas convexe, proposez-là. Il y a peut-être moyen de l’adapter facilement.) Vous pouvez aussi proposer des propriétés sur les polyèdres convexes, ou tout autre chose qui puisse faire avancer la science. Si vous n’avez pas compris, demandez des éclaircissements sur les points obscurs. Bref, participez, c’est comme ça que la solution sera trouvée
Merci d’avance
Duna
EDIT :
Précision pour les curieux : je cherche à faire ceci dans le cadre d’une réécriture d’un algorithme des parties cachées, et plus généralement, d’un moteur 3D. Je sais, ça n’a aucun intérêt, mais c’est pour le fun, et pour apprendre.