from flatsurf import similarity_surfaces, Polygon
angles = (1, 1, 1, 7)
lengths = (3, 2)
p = Polygon(angles=angles, lengths=lengths)
S = similarity_surfaces.billiard(p).minimal_cover('translation').erase_marked_points().l_infinity_delaunay_triangulation()
for t in S.polygons():
if all(x * y > 0 for x, y in t.edges()) or all(x * y < 0 for x, y in t.edges()):
print(t)
gives three wrong triangles