GT_MM_1415_Tema_1_Trigonometria_Esferica

1038 days ago by trinidad1415

Trigonometría esférica

Representación de vértices y circunferencias máximas (aristas)

Esfera unidad

Dibujamos una esfera en la que colocaremos todos los elementos.

#auto var('y','z') Esfera=implicit_plot3d(x^2+y^2+z^2==1,(x,-1.2,1.2),(y,-1.2,1.2),(z,-1.2,1.2),rgbcolor='white',opacity=0.7); 
       
Esfera 
       

Vertices

Creamos una función que recibe un punto (longitud y latitud en radianes) y devuelve el vértice correspondiente a ese punto dibujado en la esfera.

#auto def vertice(V,color='green'): return point3d((cos(V[0])*cos(V[1]),sin(V[0])*cos(V[1]),sin(V[1])),rgbcolor=color,size=20); 
       

Probamos la función:

V0=[0,0];V1=[-pi/2,0];V2=[0,pi/4];V3=[0,pi/2];V4=[-pi/4,pi/6];V5=[-pi/4,0]; 
       
Esfera+vertice(V1)+vertice(V2)+vertice(V3)+vertice(V0)+vertice(V4,color="blue") 
       

Circunferencias máximas

Creamos una función que recibe o bien un punto y un ángulo o bien dos puntos y dibuja la circunferencia máxima que pasa por el punto y tal que en el punto tiene un ángulo respecto a la vertical (respecto al meridiano) igual al fijado o la circunferencia máxima que pasa por los dos puntos.

#auto def lado(nueva_arista,color='red'): Va=nueva_arista[0] a=nueva_arista[1] if a in RR: # Si a es un valor de un ├íngulo c=circle((0,0),1,rgbcolor=color,thickness=5); ch=c.plot3d(z=0).rotate((1, 0, 0), pi/2) if Va[0]>0: cv=ch.rotate((0,0,1),(2*pi-Va[0])) else: cv=ch.rotate((0,0,1),-Va[0]) p=(cos(Va[0])*cos(Va[1]),sin(Va[0])*cos(Va[1]),sin(Va[1])) if a<0: dibarista=cv.rotate(p,(2*pi+a)) else: dibarista=cv.rotate(p,a) return dibarista else: # En caso contrario, consideramos que es un segundo punto latA=Va[1];lonA=Va[0];latB=a[1];lonB=a[0]; Cc=lonB-lonA;ac=pi/2-latA;bc=pi/2-latB; if Cc<0: Cc=2*pi-Cc cc=arccos(cos(bc)*cos(ac)+sin(ac)*sin(bc)*cos(Cc)) Bc=arccos(((cos(bc)-cos(ac)*cos(cc))/(sin(ac)*sin(cc))).simplify()) c=circle((0,0),1,rgbcolor=color,thickness=5); ch=c.plot3d(z=0).rotate((1, 0, 0), pi/2) if Va[0]>0: cv=ch.rotate((0,0,1),(2*pi-Va[0])) else: cv=ch.rotate((0,0,1),-Va[0]) p=(cos(Va[0])*cos(Va[1]),sin(Va[0])*cos(Va[1]),sin(Va[1])) if Bc<0: dibarista=cv.rotate(p,2*pi+Bc) else: dibarista=cv.rotate(p,Bc) return dibarista 
       

Probamos la función

lado1=[V0,V1] lado2=[V4,V1] lado3=[V1,V4] lado4=[V4,pi/4] lado5=[V2,pi/6] lado6=[V4,-pi/4] 
       
Esfera+vertice(V0,color='red')+vertice(V1,color='red')+lado([V0,V1],color='red')+vertice(V4,color='green')+vertice(V5,color='green')+lado([V4,V5],color='green') 
       
Esfera+vertice(V2,color='blue')+vertice(V3,color='blue')+lado([V2,V3],color='blue') 
       
Esfera+vertice(V0)+vertice(V1)+vertice(V4)+lado(lado1)+lado(lado2)+lado(lado3) 
       
Esfera+lado(lado4)+lado(lado6)+vertice(V4) 
       

Practica:

1. Dibuja los puntos correspondientes a los polos, el origen de coordenadas y los puntos $(\pm 45,\pm 45)$.

2. Dibuja el ecuador, los meridianos -45, 0, 45, la circurferencia máxima que pasa por el $(0,0)$ y tiene un ángulo de 45 respecto de la vertical y la circunferencia máxima que pasa por los puntos $(-45,45)$ y $(45,45).

 
       

Distancias

La siguiente función recibe un vértice y una distancia y devuelve los puntos a esa distancia.

#auto def distanciaVertice(V1,distancia,color='purple'): c=circle((0,0),sin(distancia),rgbcolor=color,thickness=5) return c.plot3d(z=cos(distancia)).rotate((sin(V1[0]),-cos(V1[0]), 0), pi/2-V1[1]) 
       

Probemos la función

Esfera+vertice(V4)+distanciaVertice(V4,0.4)+distanciaVertice(V1,0.2)+vertice(V1) 
       

Practica:

1. Dibuja los vértices en la posición (0,0) y (0,45).

2. Dibuja los puntos que distan $30^o$ de cada uno de los puntos anteriores. Idem con $45^o$ y con $60^o$.

 
       

Cambio de unidades

Las siguientes funciones pasan de grados a radianes y viceversa.

#auto def rad_to_deg(arad): arad=arad*180/pi signo=sign(arad) arad=abs(arad+10^-14) return signo*floor(arad),floor((arad-floor(arad))*60),((((arad-floor(arad))*60)-floor((arad-floor(arad))*60))*60).n() def deg_to_rad(grados,minutos,segundos): return (sign(grados)*(abs(grados)+minutos/60+segundos/60/60)*pi/180).n() 
       

Vamos a probar las funciones pasando 1 radian a grados

rad_to_deg(1) 
       

Es decir, 1 radian es 57 grados, 17 minutos y 44.8 segundos, aproximadamente.

Vamos a volver a convertir la salida en radianes

deg_to_rad(57,17,44.8062470963632) 
       

Practica:

1. Pasa $90^o$ en radianes y vuelta a grados.

2. Pasa $80^o10'11"$ a radianes.

3. Pasa $\pi/3$ a grados

4. Pasa $-40^o10'$ a radianes.