使用 python 显示顶点的 3D 法向量
Displaying 3D normal vectors of vertices using python
我正在使用 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()
我想要的结果是在每个顶点的顶部显示法向量。谢谢!
就像@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 存储库。
我正在使用 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()
我想要的结果是在每个顶点的顶部显示法向量。谢谢!
就像@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 存储库。