我有一个方程组 x = 1,y = 1,x + y = 1,x + y = 2。 如何获得由上述方程式形成的多边形的顶点。
答案 0 :(得分:1)
使用SymPy:
import itertools as IT
import sympy as sym
x, y = sym.symbols('x,y')
eqns = [x-1, y-1, x+y-1, x+y-2]
for pair in IT.combinations(eqns, 2):
soln = sym.solve(pair)
print('eqns: {} --> soln: {}'.format(pair, soln))
收益
eqns: (x - 1, y - 1) --> soln: {x: 1, y: 1}
eqns: (x - 1, x + y - 1) --> soln: {x: 1, y: 0}
eqns: (x - 1, x + y - 2) --> soln: {x: 1, y: 1}
eqns: (y - 1, x + y - 1) --> soln: {x: 0, y: 1}
eqns: (y - 1, x + y - 2) --> soln: {x: 1, y: 1}
eqns: (x + y - 1, x + y - 2) --> soln: []
如果您在定义多边形边缘的直线上有点而不是方程, 那么您可以使用shapely查找直线的交点:
import itertools as IT
import shapely.geometry as SG
lines = [SG.LineString([(1,-10),(1,10)]),
SG.LineString([(-10, 1),(10, 1)]),
SG.LineString([(-10, 11),(10, -9)]),
SG.LineString([(-10, 12),(10, -8)])]
for line1, line2 in IT.combinations(lines, 2):
soln = line1.intersection(line2)
if isinstance(soln, SG.point.Point):
print('soln: {}'.format(list(soln.coords)))
收益
soln: [(1.0, 1.0)]
soln: [(1.0, 0.0)]
soln: [(1.0, 1.0)]
soln: [(0.0, 1.0)]
soln: [(1.0, 1.0)]