Note this method remove all edges with length less than threshold. This could result in a non-manifold mesh.
(self, abs_threshold, rel_threshold)
| 57 | |
| 58 | @timethis |
| 59 | def collapse(self, abs_threshold, rel_threshold): |
| 60 | """ Note this method remove all edges with length less than threshold. |
| 61 | This could result in a non-manifold mesh. |
| 62 | """ |
| 63 | min_edge_length = abs_threshold |
| 64 | if rel_threshold is not None: |
| 65 | ave_edge_len = self.__get_ave_edge_length() |
| 66 | min_edge_length = rel_threshold * ave_edge_len |
| 67 | self.logger.info("Minimum edge threshold: {:.3}".format(min_edge_length)) |
| 68 | |
| 69 | num_collapsed = self.__collapse_C(min_edge_length) |
| 70 | self.logger.info("{} edges collapsed".format(num_collapsed)) |
| 71 | |
| 72 | self.__remove_fin_faces() |
| 73 | self.__remove_isolated_vertices() |
| 74 | |
| 75 | return num_collapsed |
| 76 | |
| 77 | def __get_ave_edge_length(self): |
| 78 | if not self.input_mesh.has_attribute("edge_length"): |
no test coverage detected