program weisbach real*8 alfa1,alfa2,delta1,delta2 real*8 a,b1,c1,b2,c2,d real*8 xa,ya,xb,yb real*8 r_ba real*8 beta1,beta2,gama1,gama2 real*8 pi real*8 e1,e2 real*8 r_bp1,r_p1p2,r_p2c,r_cd real*8 xp1,yp1,xp2,yp2,xc,yc,xd,yd pi=4.d0*datan(1.d0) open (100,file='weisbach.dat') c angulo entre as direccoes BA e BP1 delta1=158.2492d0*pi/180.d0 c angulo entre as direccoes BP1 e BP2 alfa1=35.7765d0*pi/180.d0 c angulo entre as direccoes CD e CP1 delta2=131.8517d0*pi/180.d0 c angulo entre as direccoes CP1 e CP2 alfa2=37.5886d0*pi/180.d0 c distancia P1P2 a=2.934d0 c catetos do triangulo a superficie b1=5.008d0 c1=3.880d0 c catetos do triangulo subterraneo b2=4.737d0 c2=3.247d0 c distancia CD d=3.803d0 c coordenadas dos pontos A e B xa=-2755.344d0 ya=5464.061d0 xb=-2729.966d0 yb=5410.307d0 c rumo da direccao BA r_ba=datan((xa-xb)/(ya-yb)) write (*,*) r_ba*180.d0/pi pause if ((xa-xb).gt.0.d0.and.(ya-yb).gt.0.d0) r_ba=r_ba if ((ya-yb).lt.0.d0) r_ba=r_ba+pi if ((xa-xb).lt.0.d0.and.(ya-yb).gt.0.d0) r_ba=r_ba+2.d0*pi write (*,*) ' Rba=',r_ba*180.d0/pi write (100,*) ' Rba=',r_ba*180.d0/pi write (100,*) c resolucao do triangulo a superficie beta1=pi-dasin(b1/a*dsin(alfa1)) gama1=dasin(c1/a*dsin(alfa1)) c erro de fecho e1=pi-(alfa1+beta1+gama1) c angulos compensados alfa1=alfa1+e1/3.d0 beta1=beta1+e1/3.d0 gama1=gama1+e1/3.d0 write (100,*) ' alfa1=',alfa1*180.d0/pi write (100,*) ' beta1=',beta1*180.d0/pi write (100,*) ' gama1=',gama1*180.d0/pi write (100,*) ' e1 =',e1*180.d0/pi write (100,*) c resolucao do triangulo subterraneo beta2=pi-dasin(b2*dsin(alfa2)/a) gama2=dasin(c2*dsin(alfa2)/a) c erro de fecho e2=pi-(alfa2+beta2+gama2) c angulos compensados alfa2=alfa2+e2/3.d0 beta2=beta2+e2/3.d0 gama2=gama2+e2/3.d0 write (100,*) ' alfa2=',alfa2*180.d0/pi write (100,*) ' beta2=',beta2*180.d0/pi write (100,*) ' gama2=',gama2*180.d0/pi write (100,*) ' e2 =',e2*180.d0/pi write (100,*) c rumo da direccao BP1 r_bp1=r_ba+delta1-2.d0*pi write (100,*) ' Rbp1=',r_bp1*180.d0/pi write (100,*) c rumo da direccao P1P2 r_p1p2=r_bp1-pi+beta1 write (100,*) ' Rp1p2=',r_p1p2*180.d0/pi write (100,*) c rumo da direccao P2C r_p2c=r_p1p2+pi-beta2 write (100,*) ' Rp2c=',r_p2c*180.d0/pi write (100,*) c rumo da direccao CD r_cd=r_p2c+pi-delta2-alfa2 write (100,*) ' Rcd=',r_cd*180.d0/pi write (100,*) c coordenadas do ponto P1 xp1=xb+c1*dsin(r_bp1) yp1=yb+c1*dcos(r_bp1) write (100,*) ' xp1=',xp1,' ;yp1=',yp1 write (100,*) c coordenadas do ponto P2 xp2=xp1+a*dsin(r_p1p2) yp2=yp1+a*dcos(r_p1p2) write (100,*) ' xp2=',xp2,' ;yp2=',yp2 write (100,*) c coordenadas do ponto C xc=xp2+c2*dsin(r_p2c) yc=yp2+c2*dcos(r_p2c) write (100,*) ' xc= ',xc,' ;yc= ',yc write (100,*) c coordenadas do ponto D xd=xc+d*dsin(r_cd) yd=yc+d*dcos(r_cd) write (100,*) ' xd= ',xd,' ;yd= ',yd write (100,*) write (*,*) 'Resultados no ficheiro weisbach.dat...' write (*,*) end