【发布时间】:2020-01-01 21:08:01
【问题描述】:
我需要以 3D 形式计算一个向量相对于另一个向量的分量。在显示结果时,虽然我对它下面的简单数学很有信心,但可视化是完全错误的。
我写了一个小脚本来重现这个问题。平面为 z = x + y,即 x + y - z = 0。与之正交的向量为 (1, 1, -1)。但是,当用quiver 绘制时,视觉结果是错误的。
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X,Y = np.meshgrid(np.arange( -1, 1, 0.1), np.arange( -1, 1, 0.1))
XX = X.flatten()
YY = Y.flatten()
Z = X + Y
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.2)
ax.scatter(1, 1, -1, c="orange", s=20, marker='o')
ax.quiver(0, 0, 0, 1, 1, -1, color="blue")
plt.show()
quiver 探测实际绘制指向目标点 (1, 1, -1) 的矢量,平面实际上是正确的,但它们不是正交的。
我是否遗漏了一些非常明显的东西,或者只是一个视角问题?
【问题讨论】:
标签: python matplotlib 3d orthogonal