def test_rotate_and_chop(self): throat_verts = self.geo["throat.vertices"][0] throat_normal = self.geo["throat.normal"][0] test = vo.rotate_and_chop(throat_verts, throat_normal, [0, 1, 0]) r, c = sp.shape(test) assert r == len(throat_verts) assert c == 2
def voronoi(geometry, **kwargs): r""" Uses the Voronoi vertices and throat normals to work out the perimeter """ Nt = geometry.num_throats() verts = geometry['throat.offset_vertices'] normals = geometry['throat.normal'] perimeter = _sp.ndarray(Nt) for i in range(Nt): if len(verts[i]) > 2: verts_2D = vo.rotate_and_chop(verts[i], normals[i], [0, 0, 1]) # Get in hull order hull = ConvexHull(verts_2D, qhull_options='QJ Pp') verts_2D = verts_2D[hull.vertices] perimeter[i] = vo.PolyPerimeter2D(verts_2D) else: perimeter[i] = 0.0 return perimeter