我正在使用python来显示一些3D点,并且我具有所有点的x-y-z坐标以及它们的(单位)法向矢量坐标。
我已经绘制了3D点,但是我不知道如何绘制法向矢量。
一些代码段是:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
# P contains point coordinates and normal vector coordinates
def drawPoints(P):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, facecolor="1.0")
ax = fig.gca(projection='3d')
x = P[:, 0]
y = P[:, 1]
z = P[:, 2]
ax.scatter(x, y, z, alpha=0.8, color="red", edgecolors='none', s=5)
nv_x = P[:, 3]
nv_y = P[:, 4]
nv_z = P[:, 5]
# I don't know how to draw normals
plt.show()
我想要的结果是在每个顶点的顶部显示法线向量。谢谢!
答案 0 :(得分:1)
就像@Scott所说的,我们可以使用mayavi
对其进行可视化。
from mayavi.mlab import *
def displayPointsAndNormals(P, N):
x = P[:, 0]
y = P[:, 1]
z = P[:, 2]
points3d(x, y, z, color=(0, 1, 0), scale_factor=0.01)
u = N[:, 0]
v = N[:, 1]
w = N[:, 2]
quiver3d(x, y, z, u, v, w)
show()
结果类似于:
数据来自this存储库。