def create_full(cls, geom, vertices_offset, faces_offset):
"""
Create by triangulating a polygon and adding the resulting facets to the total list.
"""
if isinstance(geom, (LineString, MultiLineString)):
return HybridGeometry(geom, set()), np.empty((0, 2), dtype=np.int32), np.empty((0, 3), dtype=np.uint32)
vertices = deque()
faces = deque()
faces_i = deque()
for subgeom in assert_multipolygon(geom):
new_vertices, new_faces = triangulate_polygon(subgeom)
new_faces += vertices_offset
vertices.append(new_vertices)
faces.append(new_faces)
faces_i.append(set(range(faces_offset, faces_offset+new_faces.shape[0])))
vertices_offset += new_vertices.shape[0]
faces_offset += new_faces.shape[0]
if not vertices:
return HybridGeometry(geom, set()), np.empty((0, 2), dtype=np.int32), np.empty((0, 3), dtype=np.uint32)
vertices = np.vstack(vertices)
faces = np.vstack(faces)
return HybridGeometry(geom, tuple(faces_i)), vertices, faces
评论列表
文章目录