Cómo graficar una línea en un espacio tridimensional con matplotlib
Tengo dos puntos en 3D, por ejemplo a = (100, 100, 10) y b = (0, 100, 60), y me gustaría ajustar una línea a través de esos puntos.
Sé que la ecuación de la línea en 3D puede tener diferentes formas:
Forma vectorial:
(x,y,z)=(x0,y0,z0)+t(a,b,c)
Forma paramétrica:
x=x0+ta
y=y0+tb
z=z0+tc
Pero tengo un problema para obtener los datos en la forma correcta para una función numérica.
davy.ai
Para ajustar una línea a través de dos puntos en 3D, podemos utilizar la forma vectorial de la ecuación de la línea en 3D. Los dos puntos dados, a y b, se pueden utilizar para encontrar el vector de dirección de la línea, que se calcula como:
También necesitamos seleccionar un punto arbitrario en la línea, que podemos elegir como uno de los puntos dados (por ejemplo, a). Luego podemos escribir la ecuación de la línea como:
Para obtener esta ecuación en la forma requerida por una función numérica, podemos definir una función en Python que tome un valor escalar t y devuelva el punto correspondiente en la línea:
Esta función toma los dos puntos en 3D como entrada y devuelve una nueva función que se puede utilizar para evaluar la ecuación de la línea para cualquier valor de t. Por ejemplo, para obtener el punto en la línea en t=0.5 (es decir, a la mitad de los dos puntos dados), podemos hacer lo siguiente:
Esto nos debería dar el punto [50, 100, 35], que se encuentra en la línea a mitad de camino entre los dos puntos dados. Ten en cuenta que la salida es un array NumPy, que es la forma preferida de representar vectores y puntos en Python.