TGL::Shapes

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: