[英]np.ndarray is indexed by np.ndarray
def compute_normal(vertices, faces):
norm = np.zeros(vertices.shape, dtype=vertices.dtype)
tris = vertices[faces]
## skip the rest of the code ##
其中vertices
是形状 (A,3) 的np.ndarray
, faces
是形状 (B,3) 的np.ndarray
, tris
变成形状 (B,3,3)。 (顺便说一句,B>A)
tris = vertices[faces]
实际上在做什么?
也许这个例子可以帮助你:
import numpy as np
np.random.seed(123)
vertices = np.random.rand(3, 3) # shape -> (3, 3)
faces = np.random.randint(3, size=(4, 3)) # shape -> (4, 3)
print(vertices)
# [[0.69646919 0.28613933 0.22685145]
# [0.55131477 0.71946897 0.42310646]
# [0.9807642 0.68482974 0.4809319 ]]
print(faces)
# [[1 0 2]
# [0 1 2]
# [1 0 0]
# [0 0 1]]
print(vertices[faces]) # shape -> (4, 3, 3)
# [[[0.55131477 0.71946897 0.42310646] # faces==1 -> take second row of vertices
# [0.69646919 0.28613933 0.22685145] # faces==0 -> take first row of vertices
# [0.9807642 0.68482974 0.4809319 ]] # faces==2 -> take third row of vertices
# [[0.69646919 0.28613933 0.22685145] # faces==0 -> take first row of vertices
# [0.55131477 0.71946897 0.42310646] # faces==1 -> take second row of vertices
# [0.9807642 0.68482974 0.4809319 ]] # faces==2 -> take third row of vertices
# [[0.55131477 0.71946897 0.42310646] # faces==1 -> take second row of vertices
# [0.69646919 0.28613933 0.22685145] # faces==0 -> take first row of vertices
# [0.69646919 0.28613933 0.22685145]] # faces==0 -> take first row of vertices
# [[0.69646919 0.28613933 0.22685145] # faces==0 -> take first row of vertices
# [0.69646919 0.28613933 0.22685145] # faces==0 -> take first row of vertices
# [0.55131477 0.71946897 0.42310646]]] # faces==1 -> take second row of vertices
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.