stud

study spacejunk
Log | Files | Refs | LICENSE

task2_4.py (1049B) - Raw


      1 #!/usr/bin/python3
      2 
      3 import csv
      4 from math import sin, cos, acos, radians, degrees, atan
      5 
      6 from consts import phi_1, lambda_1, phi_2, lambda_2
      7 
      8 
      9 # krasovskio
     10 kr = {}
     11 with open("krasovskio.csv") as f:
     12     for row in csv.DictReader(f):
     13         kr[float(row['phi'])] = {k: float(v) for k, v in row.items()}
     14 
     15 
     16 def sec(x):
     17     return 1/cos(x)
     18 
     19 
     20 # konstantos/radianai
     21 midphi = (phi_1+phi_2)/2
     22 rphi_1, rphi_2 = radians(phi_1), radians(phi_2)
     23 rlambda_1, rlambda_2 = radians(lambda_1), radians(lambda_2)
     24 
     25 # ortodroma
     26 rdelta = acos(sin(rphi_1)*sin(rphi_2) + cos(rphi_1)*cos(rphi_2)*cos(rlambda_2-rlambda_1))
     27 delta = degrees(rdelta)
     28 R = 6366255.58  # rutulio spindulys iš pavyzdžio
     29 ortodromos_ilgis = rdelta * R
     30 
     31 # loksodroma
     32 D_1 = kr[phi_1]["D"]
     33 D_2 = kr[phi_2]["D"]
     34 ralpha_loks = atan(60*(lambda_2 - lambda_1) / (D_2 - D_1))
     35 
     36 loksodromos_ilgis = (rphi_2 - rphi_1) * kr[midphi]["R"] * sec(ralpha_loks)
     37 
     38 if __name__ == '__main__':
     39     print("Ortodromos ilgis (m): %d" % round(ortodromos_ilgis))
     40     print("Loksodromos ilgis (m): %d" % round(loksodromos_ilgis))