diff --git a/sage/toric_topdata.sage b/sage/toric_topdata.sage index c474a8e..71c3b34 100644 --- a/sage/toric_topdata.sage +++ b/sage/toric_topdata.sage @@ -738,4 +738,35 @@ class ToricPolytopeCICY(ToricPolytope): nef_partition=nef_partition, lvec=lvec ) - \ No newline at end of file + +class ToricPolytopeProjectiveSpace(ToricPolytope): + """ + Computes topological data for hypersurfaces in toric ambient spaces. + """ + def _compute_points_from_weights(self, weights): + # Convert the weights of the projective space to the corresponding points + dimension = len(weights) - 1 + points = identity_matrix(dimension) + try: + weights.remove(1) + except ValueError: + raise ValueError("The weights must include a 1 for the projective space.") + + points = points.insert_row(0, [-w for w in weights]) + return list(points) + + def __init__( + self, + weights, + no_triangulation = 0, + model_name = None, + nef_partition = None, + lvec = None, # Note that the inner point is the last entry + ): + super().__init__( + self._compute_points_from_weights(weights), + no_triangulation=no_triangulation, + model_name=model_name, + nef_partition=nef_partition, + lvec=lvec + )