【问题标题】:How to plot multiple 3d lines with an angular offset from an initial line?如何绘制与初始线有角度偏移的多条 3d 线?
【发布时间】:2019-10-01 14:01:00
【问题描述】:

我已经绘制了一条线,比如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()

【问题讨论】:

  • 角度偏移在哪个方向?
  • 需要在不同方向上以一定角度偏移绘制多条线,以便在该集合上训练机器,以便将任何看不见的数据分类到此类类别中。

标签: python numpy matplotlib 3d


【解决方案1】:

查看此链接的 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)

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多