包含 matplotlib 中的路径的路径



我正在尝试评估一个圆是否包含在另一个形状中(在这个简单的示例中,我将使用正方形(。

import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib import path
import matplotlib.patches as patches
c = Circle((0, 0), radius=3)
path_c = c.get_path()
p = path.Path([(-2, -2), (-2, 2), (2, 2), (2, -2), (-2, -2)])
fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(p, facecolor='orange', lw=2)
patch2 = patches.PathPatch(path_c, facecolor='blue', lw=2)
ax.add_patch(patch)
ax.add_patch(patch2)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
plt.show()
print(p.contains_path(path_c))

我遇到的问题是,无论我在 Circle 中输入什么,它总是在原点形成一个半径为 1 的圆。只有当我使用get_path时,情况就是这样,但这是我可以在圆形对象上使用contains.path的唯一方法。

关于如何检查圆是否包含在另一个形状中的任何想法?

圆的路径始终是单位圆

self._path = Path.unit_circle()

在这里,您想知道圆被添加到轴上的路径,以便它可以获得一些单位。

所以首先我们需要将圆添加到轴上

c = Circle((0, 0), radius=3)
ax.add_patch(c)

然后我们可以得到转换后的路径(根据给定的半径和中心进行转换(,并检查此转换后的路径是否包含在另一条路径中。

c_path = c.get_patch_transform().transform_path(c.get_path())
print(p.contains_path(c_path))

radius=3的情况下打印False,在radius<2的情况下打印True

相关内容

  • 没有找到相关文章

最新更新