stud/Karto/assignment4/draw.py

48 lines
1.7 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:08:08 +02:00
from shapely.geometry import LineString, asPolygon
from shapely.coords import CoordinateSequence
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
fig, ax = plt.subplots()
2019-11-28 22:45:37 +02:00
A08_l = LineString([Points[i].xy for i in [1,2,3] ])
A08_multiplier = A08_plotis/(L4+L5+L6+L7+L8+L9)
2019-11-29 00:08:08 +02:00
def offset(width, direction):
return A08_l.parallel_offset(width * A08_multiplier, direction, join_style=2)
offsets = (
(offset(L6+L5+L4, 'right'), (5,3), 'lightgreen'),
(offset(L6+L5, 'right'), (5,3), 'lightgreen'),
(offset(L6, 'right'), (1,0), 'black'),
(offset(L7, 'left'), (1,0), 'black'),
(offset(L7+L8, 'left'), [5,3], 'lightgreen'),
(offset(L7+L8+L9, 'left'), [5,3], 'lightgreen'),
)
for line, dashes, color in offsets:
ax.plot(*line.xy, linewidth=.5, dashes=dashes, color=color, zorder=KAT1)
A08_poly = np.vstack((offsets[0][0].coords, offsets[-1][0].coords))
ax.add_patch(PolygonPatch(asPolygon(A08_poly), fc='white', zorder=KAT1, linewidth=0))
ax.plot(*A08_l.xy, linewidth=2, dashes=[5,2,2,5], color='red', zorder=KAT1)
2019-11-28 22:45:37 +02:00
A03_l = LineString([Points[i].xy for i in [11,12,13,14,15,16,17,18] ])
A03_offsetR = A03_l.parallel_offset(A03_plotis, 'right', join_style=2)
ax.plot(*A03_l.xy, zorder=KAT3)
ax.plot(*A03_offsetR.xy, dashes=[5,5], zorder=KAT3)
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()