def find_simplex(self): a = 0 b = 1 tEdge = Edge(self.mesh, a, b) bestd = dot(tEdge.vect, tEdge.vect) for i in range(6): p = self.points[i] for j in range(6): q = self.points[j] if q == p or (a, b == p, q) or (a, b == q, p): continue tEdge.a = p tEdge.b = q r = dot(tEdge.vect, tEdge.vect) if r > bestd: a, b = p, q bestd = r tEdge.a = a tEdge.b = b bestd = 0 c = 0 for i in range(6): p = self.points[i] if a == p or b == p: continue r = tEdge.distance(p) if r > bestd: c = p bestd = r tri = Triangle(self.mesh, a, b, c) d = 0 bestd = 0 for p in range(len(self.mesh.verts)): if a == p or b == p or c == p: continue r = tri.dist(p) if r * r > bestd * bestd: d = p bestd = r if bestd > 0: b, c = c, b faces = FaceSet(self.mesh) faces.add(Triangle(self.mesh, a, b, c)) faces.add(Triangle(self.mesh, a, d, b)) faces.add(Triangle(self.mesh, a, c, d)) faces.add(Triangle(self.mesh, c, b, d)) return faces