#python #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))
Я нахожу правильное пересечение.
Комментарии:
1. Пожалуйста, вставьте код, а не изображение кода
2. Надеюсь, теперь это ясно.
3. Вы используете
h
иw
до того, как они получат свою ценность. Кроме того, вы должны быть очень осторожны сmath
функциями внутри sympy. Для символических вычислений следует использовать эквиваленты sympy.