线穿过一个盒子(Python)

时间:2016-12-10 03:06:07

标签: python-2.7 numpy multidimensional-array intersection voxel

使用Python(2.7),如何判断一条线路是否通过一个由4个点组成的盒子?

例如,让我们说我构建了一个点的立方体:

from matplotlib import pyplot
import pylab
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = pylab.figure()
ax = Axes3D(fig)

sequence_containing_x_vals = np.array([0,0,0,0,1,1,1,1])
sequence_containing_y_vals = np.array([0,0,1,1,0,0,1,1])
sequence_containing_z_vals = np.array([0,1,0,1,0,1,0,1])

ax.scatter(sequence_containing_x_vals, sequence_containing_y_vals, sequence_containing_z_vals)
pyplot.show()

现在,让我说我的垂直线从(0.5,0.5,-3)到(0.5,0.5,3)。如何判断该线是否通过我的立方体?

1 个答案:

答案 0 :(得分:0)

这可能是您正在寻找的算法。

首先计算表示立方体的面是子集的平面的方程式,以及表示该线的方程对。

现在通过形成由线的方程对加上给定平面的方程组成的三元组来计算线与每个平面的交点,然后求解该系统。

测试任何解决方案是否在给定的线段内和立方体的边缘内。

我还没有找到一个方便的解决方案来定义给定两点的线的两个方程。但是,以下URL提供了获得平面方程的方法,给出了三点:https://math.stackexchange.com/questions/1156983/find-the-equation-of-the-plane-knowing-that-it-passes-through-3-points