
Uma das tarefas mais difíceis em sistemas de design auxiliados por computador é
filetagem ao modelar objetos de formas complexas. Para a construção de filetes, bem como para toda a geometria em CAD, o núcleo geométrico é responsável.
Do ponto de vista do desenvolvedor do kernel, é impossível cobrir todas as opções de arredondamento devido à sua variedade infinita. Nossos matemáticos estão constantemente adicionando novos casos especiais ao núcleo do C3D e recentemente fizeram um arredondamento de três faces (ou arredondamento completo).
Qual é a sua complexidade e como o algoritmo funciona, diz Anna Ladilova, matemática e programadora do C3D Labs.
O que é arredondamento completo?
Suponha que tenhamos um corpo com três cadeias de faces - central (superior) e lateral (direita e esquerda). É necessário substituir a face central por uma superfície de filete que se encaixe suavemente nas faces laterais adjacentes. Essa nova superfície terá arredondamento total. Em geral, possui um raio variável que é detectado automaticamente.

Em muitos sistemas CAD conhecidos, a operação de filete completa é implementada, mas sua matemática não é divulgada.
Operação de filete redondo completo do SolidworksPortanto, desenvolvemos nosso próprio algoritmo. E difere dos algoritmos de outros desenvolvedores.
As operações, embora sejam chamadas de iguais, levam a resultados ligeiramente diferentes. Isso sugere que o SolidWorks fornece uma definição diferente para arredondar três faces.
À direita está o modelo original, no centro está o arredondamento completo no SolidWorks, à esquerda - no C3D.Algoritmo de arredondamento completo
A tarefa de construir qualquer tipo de filetes inclui vários estágios:
- Divida a corrente em componentes elementares (para arredondar três faces, são exatamente três faces: esquerda, direita e central).
- Organize consistentemente componentes elementares.
- Crie uma superfície de filete para cada componente elementar.
- Costure as superfícies de filete adjacentes com nervuras.
- Para processar as seções finais da cadeia de filetes, ou seja, conectá-las corretamente ao corpo modificado.
O ponto principal neste procedimento é a terceira etapa: construir uma superfície de filete para três faces dadas.
Para construir a superfície desejada, primeiro é necessário determinar as curvas pelas quais o filete toca cada uma das três faces. No caso geral, essas curvas só podem ser construídas como splines que passam por pontos conhecidos que são calculados com antecedência.
Considere como você pode calcular um triplo de pontos - um em cada spline.
Processamento elementar. O filete toca cada uma das três faces ao longo das curvas 10 ; 1 ; 2 . A linha azul mostra a seção transversalEm cada seção transversal
ABC :
- OA=OB=OC - calculado automaticamente
- OA,OB,OC ortogonal aos planos tangentes das superfícies nos pontos correspondentes
- p 0 - ponto de ancoragem, fica no plano ABC .

Definimos as superfícies iniciais das faces central, esquerda e direita por vetores de raio em um determinado domínio de definição. Deixe as superfícies laterais serem definidas por vetores de raio
r 1 (u,v) e
r 2 (z,w) e o central
r 0 0 (x,y) . Introduzimos um parâmetro numérico positivo
d .
Denotar por
n 0 0 (x,y) ,
n 1 (u,v) ,
n 2 (z,w) normais normais para as superfícies correspondentes, direcionados "para dentro".
Cruze "seção" ao construir um fileteExigimos que os fins desses normais se estendam em
d vezes, acertar um ponto - ponto
O .
Em termos de geometria diferencial, nossos requisitos podem ser formulados por um sistema de sete equações com sete parâmetros:
dn 0 0 (x,y) =
dn 1 (u,v) ,
dn 0 0 (x,y) =
dn 2 (z,w) ,
(
r 0 0 (x,y) -
p 0 0 r 1 (u,v) -
p 0 0 r 2 (z,w) -
p 0 ) =
0 ,
onde
- d - raio variável
- p 0 - ponto de ancoragem
- x,y,u,v,z,w - variáveis da área de definição de parâmetros.
Usando algoritmos de métodos numéricos (por exemplo, o método de Newton), encontramos uma solução para este sistema:
x 0 0 y 0 0 u 0 0 v 0 0 z 0 0 w 0 0 d 0A solução define pontos de contato com superfícies:
- r 0 ( x 0 0 y 0 )
- r 1 ( u 0 0 v 0 )
- r 2 ( z 0 0 w 0 )
bem como raio
d 0Percorrendo um conjunto de pontos
p 0 , obtemos conjuntos de triplos de pontos tangentes com superfícies a partir das quais você pode restaurar "curvas de toque"
l 0 0 l 1 l 2 como splites de Hermite passando por pontos calculados.
Escopo [
t min t max ] todas as curvas são iguais e o parâmetro
t eu corresponde a um ponto
r 0i r 1i r 2i . Além disso, essas curvas são usadas para calcular a seção transversal do filete desejada.
Fixamos algum parâmetro
t e calcule os pontos para isso:
- r 0 0 (x(t),y(t)),
- r 1 (u(t),v(t)),
- r 2 (z(t),w(t)) .
Construímos uma curva spline passando por esses pontos e vetores normais ortogonais a eles
n 0 0 (x(t),y(t)) ,
n 1 (u(t),v(t)) ,
n 2 (z(t),w(t)) em conformidade.
Se a declaração do problema for ligeiramente alterada e a curva for pesquisada em determinados pontos e vetores tangentes nesses pontos, os métodos pelos quais essa spline pode ser implementada podem ser encontrados, por exemplo, no livro de Nikolai Golovanov, “Modelagem Geométrica”.
O livro descreve em detalhes os métodos de arredondamento de uma aresta do corpo, em particular, é mostrado que a seção transversal de um arredondamento pode ser realizada como uma curva NURBS definida por três pontos. Se três faces forem arredondadas, uma curva semelhante será determinada por cinco pontos.
Então, para cada parâmetro
t podemos definir um conjunto de pontos para a construção de NURBS e, portanto, definir cada ponto da seção transversal da superfície do filete. Assim, o problema da construção da superfície é completamente resolvido.
Havia uma pequena pergunta na descrição desta parte do algoritmo - como escolher o conjunto de pontos "corretamente"
p 0 correspondente à seção transversal através da qual será fácil restaurar as "curvas de toque"
l 0 0 l 1 l 2 ?
Parece razoável levá-los com alguma curva pré-selecionada. Não entraremos nos detalhes da construção dessa curva, apenas observamos que ela deve ser suave, sem auto-interseções e “mediar” as cadeias de arestas que delimitam a face central à esquerda e à direita.
Esquerda, transversal, dependente de pontos p 0
À direita, os números podem ser bastante complexos, portanto, escolher a curva “auxiliar” corretamente é uma tarefa separada.Agora que somos capazes de construir superfícies de filete para os casos elementares mais simples, podemos passar para um problema mais complexo: construir uma superfície para uma cadeia de faces.
O principal problema aqui é "costurar" superfícies adjacentes de maneira suave. Este é o quarto passo do algoritmo.
A dificuldade reside precisamente na suavidade da reticulação, uma vez que as superfícies são construídas com diferentes dados iniciais. Para garantir a suavidade, é necessário recorrer a vários truques: alterar a direção e o comprimento dos vetores de derivadas na direção longitudinal a uma certa distância da fronteira, alterar os valores das derivadas das funções de peso nas fronteiras, etc. Os resultados são visíveis na figura: as linhas mais suaves da zebra correspondem a uma superfície mais suave.

Acima está um modelo sem um algoritmo de suavização. Abaixo - após a aplicação do algoritmo.Sumário
Como resultado de nossa pesquisa, o núcleo geométrico C3D é capaz de construir uma seção transversal de arredondamento, curvas de suporte e arredondamento de três faces; sabe como suavizar a superfície escolhendo uma parametrização; sabe parcialmente como unir superfícies de filete adjacentes sem problemas.

Autor - Anna Ladilova, Ph.D., matemático / programador C3D Labs