Линия, проходящая через коробку (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.