Exemple #1
0
    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