मेरे पास यह कोड कई लाइनों को प्लॉट करने के लिए है (चित्र 1)। मैं इन रेखाओं के प्रतिच्छेदन बिंदु कैसे खोज सकता हूँ?

import matplotlib.pylab as pyl
import numpy as np
import math

x = [200, 300, 300, 200,200]
y = [150, 150, 100, 100,140]
x1 = [100, 400]
y1 = [50, 250]

pyl.plot(x, y, 'r')
pyl.plot(x1, y1, 'c')

pyl.xlim(0, 480)
pyl.ylim(0, 320)
pyl.grid(True)
pyl.show()

Fig1

2
smc 30 अगस्त 2019, 17:09

1 उत्तर

सबसे बढ़िया उत्तर

मुझे इस तरह की समस्याओं के लिए सुडौल पसंद है

from shapely.geometry import LineString, Polygon

x = [200, 300, 300, 200, 200]
y = [150, 150, 100, 100, 140]

x1, x2 = [100, 400]
y1, y2 = [50, 250]

poly = Polygon([(x, y) for x, y in zip(x, y)])
line = LineString([(x1, y1), (x2, y2)])

cross = poly.intersection(line)
[px1, px2], [py1, py2] = cross.coords.xy
p1 = (px1, py1) # (200, 116,66)
p2 = (px2, py2) # (250, 150)
2
BramAppel 30 अगस्त 2019, 14:33