如何绘制与初始线成角度偏移的多条3d线?

时间:2019-05-14 13:55:22

标签: python numpy matplotlib 3d

我绘制了一条说x/a + y/b + z/c = 0的线,并想绘制一组角度说为5 deg的3d线,即我想绘制许多使angle <= 5 deg的线第一行。

# my plot function with takes t = [a;b;c] as argument

def plot(t):
    z = np.linspace(-2, 2, 100)
    x = z*t[0]/t[2]
    y = z*t[1]/t[2]

    ax.plot(x, y, z, label=t)
    ax.legend()
    plt.show()

1 个答案:

答案 0 :(得分:0)

查看此链接的3d部分:

https://en.wikipedia.org/wiki/Line_(geometry)

  

在三个维度上,线不能用单个线性来描述   方程,所以经常用参数方程来描述它们。

x = x0 + a * t
y = y0 + b * t
z = z0 + c * t

其中:

x,y和z都是自变量t的函数,范围在实数范围内。 (x0,y0,z0)是直线上的任意点。

a,b和c与直线的斜率有关,因此向量v =(a,b,c)平行于直线。

因此,要解决您的问题,必须找到a1,b1,c1,以使矢量(a,b,c)和(a1,b1,c1)具有所需的角度偏移。然后画线。

要找到v1 =(a1,b1,c1),可以使用标量积的属性:

v1.v = a.a1 + b.b1 + c.c1 and v1.v = |v1|.|v|.cos(angle)