2015-12-09 2 views
1

Il s'agit là encore d'une question sur le mailleur de surfaces 3D CGAL.Génération de maillages surfaciques 3D CGAL pour des surfaces implicites non bornées

http://doc.cgal.org/latest/Surface_mesher/index.html#Chapter_3D_Surface_Mesh_Generation

Avec la définition

Surface_3 surface(sphere_function,    // pointer to function 
        Sphere_3(CGAL::ORIGIN, 64.0)); // bounding sphere 

(comme indiqué aussi dans le code exemple) I définissent une surface implicite donnée par 'fonction sphère' et un Sphere_3 de rayon 8.

La différence est maintenant, que les zéros de la «fonction de sphère» sont (contrairement à son nom maintenant trompeur) plus bornés et à l'intérieur de Sphere_3. Au lieu de cela, 'sphere_function' représente une surface non bornée (pensez à x^2 + y^2 - z^2 - 1 = 0) et mon intention est de triangulariser sa partie qui est dans la sphère_3. Dans mes exemples jusqu'à maintenant cela a très bien fonctionné, ne serait-ce que pour un problème ennuyeux, je ne sais pas comment surmonter: Les limites, où la surface implicite rencontre la Sphère, sont très "rugueuses" ou "dentelées" dans une quantité plus qu'acceptable.

J'ai déjà essayé 'Manifold_with_boundary_tag()', mais cela n'a donné aucune amélioration. Une voie pour améliorer la sortie que je considère est de convertir le maillage triangulé (un C2t3) en un polyèdre 3 et cela dans un polyèdre Nef et de croiser cela avec un polyèdre Nef qui se rapproche d'une sphère légèrement plus petite. Mais cela ressemble un peu à tirer avec des canons pour les moineaux, néanmoins je n'ai pas de meilleure idée pour l'instant et googler ne m'a pas donné d'indice. Alors ma question: Que faire à propos de ce problème? Peut-il être fait avec CGAL (et un effort de programmation modéré) ou est-il nécessaire ou préférable d'utiliser un autre système?

(Juste pour l'explication de ce dont j'ai besoin: J'essaie de développer un programme qui construit des modèles 3D imprimables de surfaces algébriques et avoir une triangulation lisse et dans les limites est ma dernière étape qui manque avant que je puisse remettre la surface à OpenSCAD pour générer un corps solide d'épaisseur constante).

Répondre

1

La seule solution que je vois est d'utiliser la génération de maillage 3D avec la préservation de la fonctionnalité nette et aucun critère sur les cellules. Vous devrez fournir vous-même l'intersection de la sphère de délimitation avec la surface. Il existe un exemple avec deux sphères croisées dans le user manual.

+0

Vous pourriez engrener dans une sphère plus grande. Et vous trouvez les visages qui coupent la petite sphère. Cela vous donne alors des fonctionnalités précises à protéger. –