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))