def _link_exterior(self, with_hyperbolic_structure=True, remove_finite_vertices=True): """ The exterior or complement of the link L, that is, S^3 minus L. >>> K = Link('4_1') >>> M = K.exterior() >>> M.volume() # doctest: +NUMERIC6 2.02988321 By default, SnapPy will try to find a hyperbolic structure on the exterior. To return a Triangulation instead of a Manifold, set the flag with_hyperbolic_structure to False. If you want to get the intermediate triangulation with extra vertices above and below the projection plane, set the flag remove_finite_vertices to False. >>> M = K.exterior(False, False) >>> (M.num_cusps(), M._num_fake_cusps()) (1, 2) """ M = Triangulation('empty') M._get_from_link_data(self.KLPProjection(), remove_finite_vertices) if with_hyperbolic_structure: M = M.with_hyperbolic_structure() dt = DTcodec(*self.DT_code(flips=True)) M._set_DTcode(dt) if self.name: M.set_name(self.name) return M
def high_precision(self): """ Return a high precision version of this manifold. >>> M = Manifold('m004') >>> type(M.high_precision()) <class 'snappy.ManifoldHP'> """ HP = ManifoldHP('empty') HP._from_string(self._to_string(), initialize_structure=False) fillings = [self.cusp_info(n).filling for n in range(self.num_cusps())] filled = self._get_tetrahedra_shapes('filled') complete = self._get_tetrahedra_shapes('complete') HP.set_tetrahedra_shapes(filled, complete, fillings) HP._polish_hyperbolic_structures() HP.set_name(self.name()) DT = self.DT_code() if DT: HP._set_DTcode(DTcodec(DT)) return HP
def low_precision(self): """ Return a low precision version of this high precision manifold. >>> M = ManifoldHP('m004') >>> type(M.low_precision()) <class 'snappy.Manifold'> """ LP = Manifold('empty') LP._from_string(self._to_string(), initialize_structure=False) fillings = [self.cusp_info(n).filling for n in range(self.num_cusps())] filled = [complex(z) for z in self._get_tetrahedra_shapes('filled')] complete = [ complex(z) for z in self._get_tetrahedra_shapes('complete') ] LP.set_tetrahedra_shapes(filled, complete, fillings) LP._polish_hyperbolic_structures() LP.set_name(self.name()) DT = self.DT_code(flips=True) if DT: LP._set_DTcode(DTcodec(*DT)) return LP