Matplotlib Axes3d,线与2d对象相交

时间:2013-05-24 11:15:52

标签: python matplotlib intersection

我正在尝试this,但在3d中并使用2d圈而不是盒子。

我在两个点​​[ (0,0,0), (3,4,5) ]之间有一条线,我想知道它是否相交

circle = Circle((2, 1), 0.5)

ax.add_patch(circle)

art3d.pathpatch_2d_to_3d(circle, z=1, zdir="x")

是否可以测试在3d轴上绘制的2d对象上相交的路径?从上面的链接示例中,我想path.intersects_circle我将圆圈定义为:

我查看了Bbox文档,似乎我不能将此方法用于圆圈?

1 个答案:

答案 0 :(得分:1)

这听起来更像是与matplotlib相关的代数问题 这就是我理解你的问题的方法:

  • 您有一个圆圈(x=2y=1),半径为r=0.5
  • 此圆位于常量z=1
  • 的平面中

1。)您需要确定矢量穿过与x,y - 平面和z=1平行的平面的位置。对于您在问题中指定的向量,此交集位于:

x = 3./(2.**0.5)
y = 4./(2.**0.5)
z = 1.

2。)您需要确定此交叉点是否属于圆圈所覆盖的平面部分。您的圈子达到的最大y-coordinate1.5 - 交叉点的y-coordinate已经更大。因此你的直线不会刺穿圆圈。

所有这些都说,我建议根据与平面的交点执行代数检查,并确定此交点是否是圆的一部分。然后才使用matplotlib