Modélisation géométrique des surfaces de congé

image

L'une des tâches les plus difficiles des systèmes de conception assistée par ordinateur consiste à effectuer des congés lors de la modélisation d'objets de formes complexes. Pour la construction des congés, ainsi que pour toute la géométrie en CAO, le noyau géométrique est responsable.

Du point de vue du développeur du noyau, il est impossible de couvrir toutes les options d'arrondi en raison de leur variété infinie. Nos mathématiciens ajoutent constamment de nouveaux cas spéciaux au noyau C3D et ont récemment effectué un arrondi de trois faces (ou arrondi complet).

Quelle est sa complexité et comment fonctionne l'algorithme, explique Anna Ladilova, mathématicienne et programmeuse au C3D Labs.

Qu'est-ce que l'arrondi complet?


Supposons que nous ayons un corps avec trois chaînes de faces - centrale (supérieure) et latérale (droite et gauche). Il est nécessaire de remplacer la face centrale par une surface de congé qui s'insérerait en douceur dans les faces latérales adjacentes. Cette nouvelle surface sera entièrement arrondie. En général, il a un rayon variable qui est automatiquement détecté.

image

Dans de nombreux systèmes de CAO bien connus, l'opération de congé complet est implémentée, mais ses mathématiques ne sont pas divulguées.

image
Opération de congé plein rond Solidworks

Par conséquent, nous avons développé notre propre algorithme. Et il diffère des algorithmes d'autres développeurs.

Les opérations, bien qu'elles soient appelées les mêmes, conduisent à des résultats légèrement différents. Cela suggère que SolidWorks donne une définition différente pour arrondir trois faces.

image
À droite, le modèle d'origine, au centre, arrondi complet dans SolidWorks, à gauche - en C3D.

Algorithme d'arrondi complet


La tâche de construction de tout type de congés comprend plusieurs étapes:

  1. Divisez la chaîne donnée en composants élémentaires (pour arrondir trois faces, il s'agit exactement de trois faces: gauche, droite et centre).
  2. Disposez constamment les composants élémentaires.
  3. Créez une surface de congé pour chaque composant élémentaire.
  4. Cousez les surfaces de congé adjacentes avec des nervures.
  5. Pour traiter les sections d'extrémité de la chaîne de congé, c'est-à-dire les connecter correctement au corps modifié.

Le point clé de cette procédure est la troisième étape: créer une surface de congé pour trois faces données.

Pour construire la surface souhaitée, il faut d'abord déterminer les courbes par lesquelles le congé touche chacune des trois faces. Dans le cas général, ces courbes ne peuvent être construites que sous forme de splines passant par des points connus calculés à l'avance.

Considérez comment vous pouvez calculer un triple de points - un sur chaque spline.

image
Traitement élémentaire. Le congé touche chacune des trois faces le long des courbes l 0 ; l 1 ; l 2 . La ligne bleue montre la coupe transversale

Dans chaque coupe transversale ABC:

  • OA=OB=OC- calculé automatiquement
  • OA,OB,OCorthogonale aux plans tangents des surfaces aux points correspondants
  • p0 - point d'ancrage, se trouve dans le plan ABC.

image

Nous définissons les surfaces initiales des faces centrale, gauche et droite par des vecteurs de rayon dans un certain domaine de définition. Laissez les surfaces latérales être définies par des vecteurs de rayon r1 (u,v)et r2 (z,w)et le central r0 (x,y). Nous introduisons un paramètre numérique positif d.

Désigner par n0 (x,y), n1 (u,v), n2 (z,w)des normales simples aux surfaces correspondantes, dirigées "vers l'intérieur".

image
"Coupe" transversale lors de la construction d'un congé

Nous exigeons que les extrémités de ces normales étirées dans dfois, frappez un point - point O.

En termes de géométrie différentielle, nos exigences peuvent être formulées par un système de sept équations avec sept paramètres:

dn0 (x,y)= dn1 (u,v),
dn0 (x,y)= dn2 (z,w),
( r0 (x,y)- p0 r1 (u,v)- p0 r2 (z,w)- p0 ) = 0,



  • d- rayon variable
  • p0 - point d'ancrage
  • x,y,u,v,z,w- variables de la zone de définition des paramètres.

En utilisant des algorithmes de méthodes numériques (par exemple, la méthode de Newton), nous trouvons une solution à ce système: x0 y0 u0 v0 z0 w0 d0 .

La solution définit des points de contact avec des surfaces:

  • r0 ( x0 y0 )
  • r1 ( u0 v0 )
  • r2 ( z0 w0 )

ainsi que le rayon d0 .

Parcourant un ensemble de points p0 , nous obtenons des ensembles de triplets de points tangents avec des surfaces à partir desquelles vous pouvez restaurer des «courbes de contact» l0 l1 l2 comme des splines Hermite passant par des points calculés.

Portée [ tmin tmax ] toutes les courbes sont les mêmes, et le paramètre tje correspond à un point r0i r1i r2i . En outre, ces courbes sont utilisées pour calculer la section transversale de congé souhaitée.

Nous fixons un paramètre tet calculer les points pour cela:

  • r0 (x(t),y(t)),
  • r1 (u(t),v(t)),
  • r2 (z(t),w(t)).

Nous construisons une courbe spline passant par ces points et des vecteurs normaux orthogonaux à ceux-ci n0 (x(t),y(t)), n1 (u(t),v(t)), n2 (z(t),w(t))en conséquence.

Si l'énoncé du problème est légèrement modifié et que la courbe est recherchée à des points donnés et des vecteurs tangents à ces points, alors les méthodes par lesquelles une telle spline peut être implémentée peuvent être trouvées, par exemple, dans le livre de Nikolai Golovanov «Modélisation géométrique».

Le livre décrit en détail les méthodes d'arrondi d'un bord de corps, en particulier, il est montré que la section transversale d'un arrondi peut être réalisée comme une courbe NURBS définie par trois points. Si trois faces sont arrondies, une courbe similaire sera déterminée par cinq points.

Donc, pour chaque paramètre tnous pouvons définir un ensemble de points pour la construction de NURBS, et donc définir chaque point de la section transversale de la surface du congé. Ainsi, le problème de la construction de surface est complètement résolu.

Il y avait une petite question dans la description de cette partie de l'algorithme - comment choisir «correctement» l'ensemble de points p0 correspondant à la section à travers laquelle il sera facile de restaurer les «courbes de contact» l0 l1 l2 ?

Il semble raisonnable de les prendre avec une courbe présélectionnée. Nous n'entrerons pas dans les détails de construction de cette courbe, nous notons seulement qu'elle doit être lisse, sans auto-intersections et «faire la moyenne» des chaînes d'arêtes délimitant la face centrale à gauche et à droite.

image
Gauche, en coupe, dépendant du point p0 .
À droite, les chiffres peuvent être assez complexes, donc choisir correctement la courbe «auxiliaire» est une tâche distincte.

Maintenant que nous sommes capables de construire des surfaces de congé pour les cas élémentaires les plus simples, nous pouvons passer à un problème plus complexe: construire une surface pour une chaîne de faces.
Le problème principal ici est de «coudre» les surfaces adjacentes d'une manière douce. Il s'agit de la quatrième étape de l'algorithme.

La difficulté réside précisément dans la fluidité de la réticulation, car les surfaces sont construites avec des données initiales différentes. Pour assurer la régularité, il faut recourir à diverses astuces: changer la direction et la longueur des vecteurs de dérivés dans le sens longitudinal à une certaine distance de la frontière, changer les valeurs des dérivées des fonctions de poids aux frontières, etc. Les résultats sont visibles sur la figure: les lignes de zèbre plus lisses correspondent à une surface plus lisse.

image

image
Ci-dessus, un modèle sans algorithme de lissage. Ci-dessous - après avoir appliqué l'algorithme.

Résumé


À la suite de nos recherches, le noyau géométrique C3D est capable de construire une section de congé, des courbes de support, un congé de trois faces; sait lisser la surface en choisissant un paramétrage; sait partiellement comment joindre en douceur des surfaces de congé adjacentes.


Auteur - Anna Ladilova, Ph.D., mathématicienne / programmeuse C3D Labs

Source: https://habr.com/ru/post/fr474738/


All Articles