def _compute_convex_hull(self):
border = (self.triangle_neighbors == -<NUM_LIT:1>)<EOL>edges = {}<EOL>edges.update(dict(zip(self.triangle_nodes[border[:,<NUM_LIT:0>]][:,<NUM_LIT:1>],<EOL>self.triangle_nodes[border[:,<NUM_LIT:0>]][:,<NUM_LIT:2>])))<EOL>edges.update(dict(zip(self.triangle_nodes[border[:,<NUM_LIT:1>]][:,<NUM_LIT:2>],<EOL>self.triangle_nodes[border[:,<NUM_LIT:1>]][:,<NUM_LIT:0>])))<EOL>edges.update(dict(zip(self.triangle_nodes[border[:,<NUM_LIT:2>]][:,<NUM_LIT:0>],<EOL>self.triangle_nodes[border[:,<NUM_LIT:2>]][:,<NUM_LIT:1>])))<EOL>hull = list(edges.popitem())<EOL>while edges:<EOL><INDENT>hull.append(edges.pop(hull[-<NUM_LIT:1>]))<EOL><DEDENT>hull.pop()<EOL>return hull<EOL>
Extract the convex hull from the triangulation information.

        The output will be a list of point_id's in counter-clockwise order
        forming the convex hull of the data set.