Desenho eficiente de formas geométricas. Foi observada a necessidade e oportunidade de centralizar o desenho de formas básicas em uma lib para desenho eficiente e assim surgiu a TGL::Shapes, numa iniciativa de pura curiosidade. Formas comumente utilizadas para desenho são armazenadas na placa gráfica (GPU) e chamadas com a aplicação de transformações lineares apropriadas. As formas atualmente implementadas são:
(1) Cilindro
(2) Cone
(3) Esfera
(4) Seta (Combinação de Cilindro e Cone)
(5) Elos de corrente com e sem malhete
(6) Sequência de elos: correntes
(7) Cordas de poliéster
Cilindro e cone são discretizados de forma trivial. A seguir exemplos de seta, cilindro e cone. Cada forma é desenhada com uma única linha de código.
A esfera, para não ser tendenciosa nos polos, é gerada por subdivisões sucessivas a partir de um icosaedro (poliedro composto por 20 triângulos equiláteros). Isso lhe confere um aspecto homogênea. A discretização ingênua em latitudes e longitudes gera uma malha ruim nos polos devido à elevada valência de seus vértices correspondentes. A triangulação proposta gera um resultado visualmente mais homogêneo e agradável. Em cada iteração do algoritmo de refinamento de malha, cada face triangular é subdividida em 4 triângulos como na figura abaixo:
As três arestas são divididas em seus pontos médios, que são projetados na esfera e dão origem aos quatro novos triângulos.
A seguir apresento a esfera resultante em diversos níveis de refinamento, começando pelo icosaedro original (figura à esquerda). A sequência de imagens superior apresenta as malhas para fins de ilustração.
|
||||
Icosaedro original |
1º nível de refinamento |
2º nível |
3º nível |
4º nível (padrão utilizado) |
A figura a seguir mostra o aspecto das linhas de ancoragem em uma plataforma petrolífera real. O tamanho dos elos é exatamente o utilizado em campo.
A seguir um zoom numa conexão entre corrente e poliéster: