lunes, 14 de marzo de 2022

Cúpulas geodésicas: cálculo de coordenadas



 


 
Formulación del cálculo de coordenadas en los puntos de la triangulación de las caras de los poliedros de base para formar las cúpulas geodésicas:


Triangulo geodesico




En este ejemplo podemos ver como componer las fórmulas:
Conocidos los vértices v0, v1 y v2 del triangulo que forma la cara del poliedro, la triangulación de esa cara tendrá unos nudos adicionales que son los que tenemos que calcular.
Esas coordenadas se forman mediante polinomios de tres términos: por ejemplo el nudo v12 tendra la coordenada x12 =  a0*x0 + a1*x1 + a2*x2
los coeficientes a0, a1 y a2 son los siguientes para particiones V2 hasta V5



ndn=21
15
10
6

V5
V4
V3
V2
n
a0,a1,a2
a0,a1,a2
a0,a1,a2
a0,a1,a2
3
4,1,0
3,1,0
2,1,0
1,1,0
4
4,0,1
3,0,1
2,0,1
1,0,1
5
3,2,0
2,2,0
1,2,0
0,1,1
6
3,1,1
2,1,1
1,1,1

7
3,0,2
2,0,2
1,0,2
8
2,3,0
1,3,0
0,2,1
9
2,2,1
1,2,1
0,1,2
10
2,1,2
1,1,2

11
2,0,3
1,0,3
12
1,4,0
0,3,1
13
1,3,1
0,2,2
14
1,2,2
0,1,3
16
1,1,3

17
0,4,1
18
0,3,2
19
0,2,3
20
0,1,4


Viendo que estos coeficientes siguen una secuencia uniforme se puede generalizar su empleo mediante unas fórmulas sencillas para cualquier tamaño V de la triangulación:

'serie a0
i=0
for nn=V-1 to 0 step -1
  ndv=V+1-nn :if nn=0 then ndv=ndv-2
  for mm=1 to ndv :i=i+1 :a0(i)=nn :next
next
ndn1=i
'.................
i=0 'serie a1
for nn=1 to V-1
for mm=nn to 0 step -1:i=i+1:a1(i)=mm :next:next
for mm=V-1 to 1 step -1:i=i+1:a1(i)=mm :next
'..................
'serie a2
for nn=1 to ndn1 :a2(nn)=V-(a1(nn)+a0(nn)) :next
'....…



Una vez que tenemos los coeficientes, el cálculo de coordenadas es inmediato:

for n=1 to ca ' 20 caras del icosaedro
  for m=3 to ndn-1 'triangulación
   a0=a0(m-2)
   a1=a1(m-2)
   a2=a2(m-2)

   x(n,m)= (a0*x(n,0)+a1*x(n,1)+a2*x(n,2))/V 'coordenadas en el icosaedro
   y(n,m)= (a0*y(n,0)+a1*y(n,1)+a2*y(n,2))/V
   z(n,m)= (a0*z(n,0)+a1*z(n,1)+a2*z(n,2))/V
  next
next

Y una vez que tenemos las cordenadas de los puntos de la triangulación sobre el poliedro, los proyectamos a la esfera asi:

for n=1 to ca '20
 for m=0 to ndn-1
   r(n,m)= sqr(x(n,m)^2+y(n,m)^2+z(n,m)^2) 'distancia al centro desde la cara del icosaedro
   xp(n,m)= x(n,m)/r(n,m) 'coordenadas sobre la esfera
   yp(n,m)= y(n,m)/r(n,m)
   zp(n,m)= z(n,m)/r(n,m)
 next
next

y ya tenemos las coordenadas de la cupula o esfera geodesica xp,yp,zp 
 
Informacion util para la construccion de cupulas geodesicas se puede encontrar en estos dos libros:
 
 
 

No hay comentarios: