我不知道如何全面地解釋我的問題。所以,我會告訴你一個例子...將四邊形和三角形網格轉換爲僅由三角形組成的網格
我有這樣的陣列表示每個四或三角形的頂點指數:
>>> faces
array([[0, 1, 2, 3],
[4, 7, 6, 5],
[0, 4, 1, 0],
[1, 5, 6, 2],
[2, 6, 7, 3],
[4, 0, 3, 7],
[1, 4, 5, 0]])
三角形是與0
我要結束元素做出這樣的轉換:
>>> faces
array([[0, 1, 2, 3], #->[[0, 1, 2], [0, 2, 3],
[4, 7, 6, 5], #-> [4, 7, 6], [4, 6, 5],
[0, 4, 1, 0], #-> [0, 4, 1],
[1, 5, 6, 2], #-> [1, 5, 6], [1, 6, 2],
[2, 6, 7, 3], #-> [2, 6, 7], [2, 7, 3],
[4, 0, 3, 7], #-> [4, 0, 3], [4, 3, 7],
[1, 4, 5, 0]]) #-> [1, 4, 5]]
那麼我該如何有效地進行這種轉換?
我做了一個解決它不同的功能。將由四邊形獲得的tirangles放在數組的末尾。
def v_raw_to_tris(tessfaces):
len_tessfaces = len(tessfaces)
quad_indices = tessfaces[:, 3].nonzero()[0]
t3 = np.empty(((len_tessfaces + len(quad_indices)), 3), 'i4')
t3[:len_tessfaces] = tessfaces[:, :3]
t3[len_tessfaces:] = tessfaces[quad_indices][:, (0, 2, 3)]
return t3
但我不希望產生的三角形在數組的末尾。並且在原來的四邊形前面是
因此,輸出將具有可變數目的列表,例如第一個elem會有兩個列表? – Divakar
或者我們可以把它們全部放在行中,總共給我們12行? – Divakar
@Divakar,不。每個元素將有3個項目 –