Линия, проходящая через коробку (Python)

Используя 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 ответ

Это может быть тот алгоритм, который вы ищете.

Сначала вычислите уравнения, представляющие плоскости, гранями куба которых являются подмножества, и пару уравнений, представляющих линию.

Теперь вычислите точки пересечения линии с каждой плоскостью, формируя тройки, состоящие из пары уравнений линии плюс уравнение для данной плоскости, а затем решая эту систему.

Проверьте, находится ли какое-либо из решений в пределах данного отрезка и в пределах краев куба.

Я не нашел удобного решения для двух уравнений, определяющих линию, заданную двумя точками. Однако следующий URL-адрес предоставляет методы для получения уравнения плоскости с учетом трех точек: https://math.stackexchange.com/questions/1156983/find-the-equation-of-the-plane-knowing-that-it-passes-through-3-points.

Другие вопросы по тегам