0

En utilisant Python (2.7), comment puis-je savoir quand une ligne passe par une boîte composée de 4 points?Ligne passant par une boîte (Python)

Par exemple, disons que je l'ai construit un cube de points:

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() 

Maintenant, disons que j'ai une ligne verticale passant de (0.5,0.5, -3) à (0.5,0.5 , 3). Comment puis-je savoir si cette ligne traverse mon cube?

+0

https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection – user4421975

Répondre

0

Cela pourrait être le type d'algorithme que vous recherchez.

D'abord calculer les équations représentant les plans dont les faces du cube sont des sous-ensembles, et la paire d'équations qui représentent la ligne.

Calculez maintenant les points d'intersection de la ligne avec chaque plan en formant des triplets consistant en la paire d'équations de la ligne plus l'équation pour le plan donné, puis en résolvant ce système.

Testez si l'une des solutions se trouve dans le segment de ligne donné et dans les limites du cube.

Je n'ai pas trouvé de solution pratique pour les deux équations définissant une ligne à deux points. Cependant, l'URL suivante fournit des méthodes pour obtenir l'équation d'un plan donné trois points: https://math.stackexchange.com/questions/1156983/find-the-equation-of-the-plane-knowing-that-it-passes-through-3-points.