task2_1b is now officially task2_1

This commit is contained in:
Motiejus Jakštys 2020-12-16 17:57:53 +02:00
parent 7f73fca2c2
commit 638dcbb07d
2 changed files with 8 additions and 67 deletions

View File

@ -1,15 +1,16 @@
#!/usr/bin/python3 #!/usr/bin/python3
import csv import csv
from math import degrees from math import degrees, radians, tan, pi, log
from shapely.geometry import LineString from shapely.geometry import LineString
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
phi_p, phi_s, dphi = 13, 49, 6 phi_p, phi_s, dphi = 13, 49, 6
nphi = int((phi_s-phi_p)/dphi)+1
lambda_v, lambda_r, dlambda = 0, 24, 6 lambda_v, lambda_r, dlambda = 0, 24, 6
nlambda = int((lambda_r-lambda_v)/dlambda)+1
M = 25e6 M = 25e6
phil = round((phi_p+phi_s)/2)
nphi = int((phi_s-phi_p)/dphi)+1
nlambda = int((lambda_r-lambda_v)/dlambda)+1
# label orientations # label orientations
W, E, N, S = (-25, -5), (10, -5), (-5, 10), (-5, -20) W, E, N, S = (-25, -5), (10, -5), (-5, 10), (-5, -20)
@ -18,12 +19,14 @@ krasovskio = {}
with open("krasovskio.csv") as f: with open("krasovskio.csv") as f:
for row in csv.DictReader(f): for row in csv.DictReader(f):
krasovskio[float(row['phi'])] = row krasovskio[float(row['phi'])] = row
betamm = float(krasovskio[phil]["r"]) * 1000 / M
points = [] points = []
for i in range(nphi): for i in range(nphi):
phid = phi_p + i*dphi phid = phi_p + i*dphi
betamm = float(krasovskio[phid]["r"]) * 1000 / M phi = radians(phid)
xmm = betamm * float(krasovskio[phid]["lgU"]) U = tan(pi/4 + phi/2)
xmm = betamm * log(U)
on_y = [] on_y = []
for j in range(nlambda): for j in range(nlambda):
lambdad = lambda_v + j*dlambda lambdad = lambda_v + j*dlambda

View File

@ -1,62 +0,0 @@
#!/usr/bin/python3
import csv
from math import degrees, radians, tan, pi, log
from shapely.geometry import LineString
import matplotlib.pyplot as plt
phi_p, phi_s, dphi = 13, 49, 6
lambda_v, lambda_r, dlambda = 0, 24, 6
M = 25e6
phil = round((phi_p+phi_s)/2)
nphi = int((phi_s-phi_p)/dphi)+1
nlambda = int((lambda_r-lambda_v)/dlambda)+1
# label orientations
W, E, N, S = (-25, -5), (10, -5), (-5, 10), (-5, -20)
krasovskio = {}
with open("krasovskio.csv") as f:
for row in csv.DictReader(f):
krasovskio[float(row['phi'])] = row
betamm = float(krasovskio[phil]["r"]) * 1000 / M
points = []
for i in range(nphi):
phid = phi_p + i*dphi
phi = radians(phid)
U = tan(pi/4 + phi/2)
xmm = betamm * log(U)
on_y = []
for j in range(nlambda):
lambdad = lambda_v + j*dlambda
ymm = betamm * lambdad / degrees(1)
on_y.append((ymm, xmm))
points.append(on_y)
fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.axis("off")
def annotate(ax, nr, point, heading):
text = "{}°".format(nr)
ax.annotate(text, point, textcoords="offset points", xytext=heading)
# abscises
for i in range(nphi):
row = [points[i][j] for j in range(nlambda)]
ax.plot(*(LineString(row).xy), color="xkcd:black", linewidth=.5)
annotate(ax, phi_p+i*dphi, row[0], W)
annotate(ax, phi_p+i*dphi, row[-1], E)
# ordinates
for i in range(nlambda):
col = [points[j][i] for j in range(nphi)]
ax.plot(*(LineString(col).xy), color="xkcd:black", linewidth=.5)
annotate(ax, lambda_v+i*dlambda, col[0], S)
annotate(ax, lambda_v+i*dlambda, col[-1], N)
if __name__ == '__main__':
plt.show()