Отображение трехмерных нормальных векторов вершин с использованием Python - PullRequest
2 голосов
/ 15 апреля 2019

Я использую , чтобы отобразить некоторые трехмерные точки, и у меня есть координаты xyz всех точек, а также их (единичные) координаты вектора нормали.

Я составил графикТрехмерные точки, но я не знаю, как построить нормальные векторы.

Вот некоторые фрагменты кода:

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() 

Мой желаемый результат - отображение вектора нормали в верхней части каждоговершина.Спасибо!

1 Ответ

1 голос
/ 16 апреля 2019

Как сказал @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()

Результат выглядит так:

enter image description here

Данные взяты из этого хранилища.

...