我绘制了一条说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()
答案 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)