stud/Karto/assignment4/draw.py

72 lines
2.3 KiB
Python
Raw Normal View History

2019-11-28 18:54:24 +02:00
#!/usr/bin/env python3
2019-11-29 00:08:08 +02:00
import numpy as np
2019-11-28 18:54:24 +02:00
import matplotlib.pyplot as plt
2019-11-29 00:34:41 +02:00
from collections import namedtuple
2019-11-29 00:08:08 +02:00
from shapely.geometry import LineString, asPolygon
from descartes import PolygonPatch
2019-11-28 18:54:24 +02:00
2019-11-28 19:55:27 +02:00
from measure import *
2019-11-28 18:54:24 +02:00
2019-11-29 00:46:31 +02:00
juosta = namedtuple('juosta', ['plotis', 'kryptis', 'dashes', 'spalva'])
kelias = namedtuple('kelias', ['virsunes', 'plotis', 'kat', 'dashes', 'spalva', 'juostos'])
2019-11-28 18:54:24 +02:00
2019-11-29 00:34:41 +02:00
fig, ax = plt.subplots()
2019-11-28 22:45:37 +02:00
2019-11-29 00:34:41 +02:00
a08 = kelias(
2019-11-29 00:46:31 +02:00
virsunes=[1,2,3],
plotis=A08_plotis,
2019-11-29 00:34:41 +02:00
kat=KAT1,
dashes=[10,3,2,3],
2019-11-29 00:46:31 +02:00
spalva='red',
juostos=(
juosta(L6+L5+L4, 'right', (100,20), 'lightgreen'),
juosta(L6+L5, 'right', (100,20), 'lightgreen'),
juosta(L6, 'right', (1,0), 'black'),
juosta(L7, 'left', (1,0), 'black'),
juosta(L7+L8, 'left', (100,20), 'lightgreen'),
juosta(L7+L8+L9, 'left', (100,20), 'lightgreen'),
2019-11-29 00:34:41 +02:00
),
2019-11-29 00:08:08 +02:00
)
2019-11-29 00:34:41 +02:00
2019-11-29 00:46:31 +02:00
a03 = kelias(
virsunes=[11,12,13,14,15,16,17,18],
plotis=A03_plotis,
kat=KAT3,
dashes=(1,0),
spalva='pink',
juostos=(
offset(L1, 'right', (100,20), 'pink'),
),
)
for kelias in [a08, a03]:
2019-11-29 00:34:41 +02:00
# ašis
2019-11-29 00:46:31 +02:00
kelias_line = LineString([Points[i].xy for i in kelias.virsunes ])
ax.plot(*kelias_line.xy, linewidth=2, dashes=kelias.dashes, color=kelias.spalva, zorder=kelias.kat)
2019-11-29 00:34:41 +02:00
# offset'ai
2019-11-29 00:46:31 +02:00
offset_multiplier = kelias.plotis/(kelias.juostos[0].plotis + kelias.juostos[-1].plotis)
2019-11-29 00:34:41 +02:00
offset_lines = []
2019-11-29 00:46:31 +02:00
for offset in kelias.juostos:
l = kelias_line.parallel_offset(offset.plotis * offset_multiplier, offset.kryptis, join_style=2)
2019-11-29 00:34:41 +02:00
offset_lines.append(l)
2019-11-29 00:46:31 +02:00
ax.plot(*l.xy, linewidth=.5, dashes=offset.dashes, color=offset.spalva, zorder=kelias.kat)
2019-11-29 00:34:41 +02:00
# kelio poligonas su plotu
kelias_poly = np.vstack((offset_lines[0].coords, offset_lines[-1].coords))
ax.add_patch(PolygonPatch(asPolygon(kelias_poly), fc='white', zorder=kelias.kat, linewidth=0))
2019-11-29 00:08:08 +02:00
2019-11-28 22:45:37 +02:00
A05_l = LineString([Points[i].xy for i in [4,5,6,7,8,9,10] ])
A05_offsetL = A05_l.parallel_offset(L2, 'left', join_style=2)
A05_offsetR = A05_l.parallel_offset(L3, 'right', join_style=2)
ax.plot(*A05_l.xy, zorder=KAT2)
ax.plot(*A05_offsetL.xy, dashes=[5,5], zorder=KAT2)
ax.plot(*A05_offsetR.xy, dashes=[5,5], zorder=KAT2)
2019-11-28 18:54:24 +02:00
ax.set_title('Užliejamų plotų brėžinys')
plt.show()