Vertex indices Edge indices 2 3 +------+ 2 +------+ | | 3 | | 1 | | | | 0 +------+ 1 +------+ 0
(corners, subdiv_order)
| 98 | return mesh, quad_indices |
| 99 | |
| 100 | def subdivide_quad(corners, subdiv_order): |
| 101 | """ |
| 102 | Vertex indices Edge indices |
| 103 | 2 |
| 104 | 3 +------+ 2 +------+ |
| 105 | | | 3 | | 1 |
| 106 | | | | | |
| 107 | 0 +------+ 1 +------+ |
| 108 | 0 |
| 109 | """ |
| 110 | if subdiv_order == 0: |
| 111 | return [corners] |
| 112 | face_center = np.mean(corners, axis=0) |
| 113 | edge_centers = [ |
| 114 | 0.5 * (corners[0] + corners[1]), |
| 115 | 0.5 * (corners[1] + corners[2]), |
| 116 | 0.5 * (corners[2] + corners[3]), |
| 117 | 0.5 * (corners[3] + corners[0]) ] |
| 118 | |
| 119 | subcells = [ |
| 120 | [corners[0], edge_centers[0], face_center, edge_centers[3]], |
| 121 | [edge_centers[0], corners[1], edge_centers[1], face_center], |
| 122 | [face_center, edge_centers[1], corners[2], edge_centers[2]], |
| 123 | [edge_centers[3], face_center, edge_centers[2], corners[3]] ] |
| 124 | |
| 125 | subcell_corners = [] |
| 126 | for cell in subcells: |
| 127 | subcell_corners += subdivide_quad(cell, subdiv_order-1) |
| 128 | return subcell_corners |
| 129 | |
| 130 | def split_quad_into_tris(corners): |
| 131 | vertices = corners |
no outgoing calls
no test coverage detected