首页 > 解决方案 > Sympy 代码中的空交集,但如果显式声明则有效

问题描述

在代码中,我试图获得一条线和多边形的交点,但它显示一个空的交点。

#code snippet
#rot val is -1.2476679904445084e-10
from sympy import Point,Line, Polygon
L = Line(Point(h//2,w//2),slope = math.tan(math.radians(90 - rot_val)))
h,w,c = im.shape
p = Polygon((0,0),(0,w-1),(h-1,w-1),(h-1,0))
print("Line is",end = " ")
print(L)
print("Polygon is",end = " ")
print(p)
print("intersection is",end = " ")
print(p.intersection(L))
intersection = p.intersection(L)

输出:

Line is Line2D(Point2D(466, 838), Point2D(467, -459189054634.429))
Polygon is Polygon(Point2D(0, 0), Point2D(0, 1675), Point2D(931, 1675), Point2D(931, 0))
intersection is []

但是如果我运行这段代码,

p = Polygon(Point2D(0, 0), Point2D(0, 1675), Point2D(931, 1675), Point2D(931, 0))
l = Line2D(Point2D(466, 838), Point2D(467, -459189054634.429))
print(l.intersection(p))

我得到了正确的交叉点。

标签: pythonsympy

解决方案


推荐阅读