/* See {Lens.h} */ #include /* Last edited on 2007-02-03 13:47:55 by stolfi */ #define Lens_C_COPYRIGHT \ "Copyright © 2000,2007 Universidade Estadual de Campinas (UNICAMP)" #include #include #include #include #include #include #include #include #include #include Place_t MakeLens1(void) { TwelveByFivePlaces_t d = TriangulatedDodecahedron2(); { /* the opposite walls are: d[0] d[6] d[1] d[9] d[2] d[8] d[3] d[7] d[4] d[11] d[5] d[10] */ (void)Glue(Clock(d.p[0][0]), d.p[6][0],1,TRUE); (void)Glue(Clock(d.p[0][1]), d.p[6][4],1,TRUE); (void)Glue(Clock(d.p[0][2]), d.p[6][3],1,TRUE); (void)Glue(Clock(d.p[0][3]), d.p[6][2],1,TRUE); (void)Glue(Clock(d.p[0][4]), d.p[6][1],1,TRUE); (void)Glue(Clock(d.p[1][0]), d.p[9][0],1,TRUE); (void)Glue(Clock(d.p[1][1]), d.p[9][4],1,TRUE); (void)Glue(Clock(d.p[1][2]), d.p[9][3],1,TRUE); (void)Glue(Clock(d.p[1][3]), d.p[9][2],1,TRUE); (void)Glue(Clock(d.p[1][4]), d.p[9][1],1,TRUE); (void)Glue(Clock(d.p[2][0]), d.p[8][0],1,TRUE); (void)Glue(Clock(d.p[2][1]), d.p[8][4],1,TRUE); (void)Glue(Clock(d.p[2][2]), d.p[8][3],1,TRUE); (void)Glue(Clock(d.p[2][3]), d.p[8][2],1,TRUE); (void)Glue(Clock(d.p[2][4]), d.p[8][1],1,TRUE); (void)Glue(Clock(d.p[3][0]), d.p[7][0],1,TRUE); (void)Glue(Clock(d.p[3][1]), d.p[7][4],1,TRUE); (void)Glue(Clock(d.p[3][2]), d.p[7][3],1,TRUE); (void)Glue(Clock(d.p[3][3]), d.p[7][2],1,TRUE); (void)Glue(Clock(d.p[3][4]), d.p[7][1],1,TRUE); (void)Glue(Clock(d.p[4][0]), d.p[11][0],1,TRUE); (void)Glue(Clock(d.p[4][1]), d.p[11][4],1,TRUE); (void)Glue(Clock(d.p[4][2]), d.p[11][3],1,TRUE); (void)Glue(Clock(d.p[4][3]), d.p[11][2],1,TRUE); (void)Glue(Clock(d.p[4][4]), d.p[11][1],1,TRUE); (void)Glue(Clock(d.p[5][0]), d.p[10][0],1,TRUE); (void)Glue(Clock(d.p[5][1]), d.p[10][4],1,TRUE); (void)Glue(Clock(d.p[5][2]), d.p[10][3],1,TRUE); (void)Glue(Clock(d.p[5][3]), d.p[10][2],1,TRUE); (void)Glue(Clock(d.p[5][4]), d.p[10][1],1,TRUE); fprintf(stderr, "Building topology of Lens1 :\n"); /* Return one @place not kill by the Glue Procedure */ return d.p[0][0]; } } Place_t MakeLens2(void) { TwelveByFivePlaces_t d = TriangulatedDodecahedron2(); { /* the opposite walls are: d.p[0] d.p[6] d.p[1] d.p[9] d.p[2] d.p[8] d.p[3] d.p[7] d.p[4] d.p[11] d.p[5] d.p[10] */ (void)Glue(Clock(d.p[0][0]), d.p[6][1],1,TRUE); (void)Glue(Clock(d.p[0][1]), d.p[6][0],1,TRUE); (void)Glue(Clock(d.p[0][2]), d.p[6][4],1,TRUE); (void)Glue(Clock(d.p[0][3]), d.p[6][3],1,TRUE); (void)Glue(Clock(d.p[0][4]), d.p[6][2],1,TRUE); (void)Glue(Clock(d.p[1][0]), d.p[9][1],1,TRUE); (void)Glue(Clock(d.p[1][1]), d.p[9][0],1,TRUE); (void)Glue(Clock(d.p[1][2]), d.p[9][4],1,TRUE); (void)Glue(Clock(d.p[1][3]), d.p[9][3],1,TRUE); (void)Glue(Clock(d.p[1][4]), d.p[9][2],1,TRUE); (void)Glue(Clock(d.p[2][0]), d.p[8][1],1,TRUE); (void)Glue(Clock(d.p[2][1]), d.p[8][0],1,TRUE); (void)Glue(Clock(d.p[2][2]), d.p[8][4],1,TRUE); (void)Glue(Clock(d.p[2][3]), d.p[8][3],1,TRUE); (void)Glue(Clock(d.p[2][4]), d.p[8][2],1,TRUE); (void)Glue(Clock(d.p[3][0]), d.p[7][1],1,TRUE); (void)Glue(Clock(d.p[3][1]), d.p[7][0],1,TRUE); (void)Glue(Clock(d.p[3][2]), d.p[7][4],1,TRUE); (void)Glue(Clock(d.p[3][3]), d.p[7][3],1,TRUE); (void)Glue(Clock(d.p[3][4]), d.p[7][2],1,TRUE); (void)Glue(Clock(d.p[4][0]), d.p[11][1],1,TRUE); (void)Glue(Clock(d.p[4][1]), d.p[11][0],1,TRUE); (void)Glue(Clock(d.p[4][2]), d.p[11][4],1,TRUE); (void)Glue(Clock(d.p[4][3]), d.p[11][3],1,TRUE); (void)Glue(Clock(d.p[4][4]), d.p[11][2],1,TRUE); (void)Glue(Clock(d.p[5][0]), d.p[10][1],1,TRUE); (void)Glue(Clock(d.p[5][1]), d.p[10][0],1,TRUE); (void)Glue(Clock(d.p[5][2]), d.p[10][4],1,TRUE); (void)Glue(Clock(d.p[5][3]), d.p[10][3],1,TRUE); (void)Glue(Clock(d.p[5][4]), d.p[10][2],1,TRUE); fprintf(stderr, "Building topology of Lens2 :\n"); /* Return one @place not kill by the Glue Procedure */ return d.p[0][0]; } } Place_t MakeLens3(void) { TwelveByFivePlaces_t d = TriangulatedDodecahedron2(); { /* the opposite walls are: d.p[0] d.p[6] d.p[1] d.p[9] d.p[2] d.p[8] d.p[3] d.p[7] d.p[4] d.p[11] d.p[5] d.p[10] */ (void)Glue(Clock(d.p[0][0]), d.p[6][2],1,TRUE); (void)Glue(Clock(d.p[0][1]), d.p[6][1],1,TRUE); (void)Glue(Clock(d.p[0][2]), d.p[6][0],1,TRUE); (void)Glue(Clock(d.p[0][3]), d.p[6][4],1,TRUE); (void)Glue(Clock(d.p[0][4]), d.p[6][3],1,TRUE); (void)Glue(Clock(d.p[1][0]), d.p[9][2],1,TRUE); (void)Glue(Clock(d.p[1][1]), d.p[9][1],1,TRUE); (void)Glue(Clock(d.p[1][2]), d.p[9][0],1,TRUE); (void)Glue(Clock(d.p[1][3]), d.p[9][4],1,TRUE); (void)Glue(Clock(d.p[1][4]), d.p[9][3],1,TRUE); (void)Glue(Clock(d.p[2][0]), d.p[8][2],1,TRUE); (void)Glue(Clock(d.p[2][1]), d.p[8][1],1,TRUE); (void)Glue(Clock(d.p[2][2]), d.p[8][0],1,TRUE); (void)Glue(Clock(d.p[2][3]), d.p[8][4],1,TRUE); (void)Glue(Clock(d.p[2][4]), d.p[8][3],1,TRUE); (void)Glue(Clock(d.p[3][0]), d.p[7][2],1,TRUE); (void)Glue(Clock(d.p[3][1]), d.p[7][1],1,TRUE); (void)Glue(Clock(d.p[3][2]), d.p[7][0],1,TRUE); (void)Glue(Clock(d.p[3][3]), d.p[7][4],1,TRUE); (void)Glue(Clock(d.p[3][4]), d.p[7][3],1,TRUE); (void)Glue(Clock(d.p[4][0]), d.p[11][2],1,TRUE); (void)Glue(Clock(d.p[4][1]), d.p[11][1],1,TRUE); (void)Glue(Clock(d.p[4][2]), d.p[11][0],1,TRUE); (void)Glue(Clock(d.p[4][3]), d.p[11][4],1,TRUE); (void)Glue(Clock(d.p[4][4]), d.p[11][3],1,TRUE); (void)Glue(Clock(d.p[5][0]), d.p[10][2],1,TRUE); (void)Glue(Clock(d.p[5][1]), d.p[10][1],1,TRUE); (void)Glue(Clock(d.p[5][2]), d.p[10][0],1,TRUE); (void)Glue(Clock(d.p[5][3]), d.p[10][4],1,TRUE); (void)Glue(Clock(d.p[5][4]), d.p[10][3],1,TRUE); fprintf(stderr, "Building topology of Lens3 :\n"); /* Return one @place not kill by the Glue Procedure */ return d.p[0][0]; } } Place_t MakeLens4(void) { TwelveByFivePlaces_t d = TriangulatedDodecahedron2(); { /* the opposite walls are: d.p[0] d.p[6] d.p[1] d.p[9] d.p[2] d.p[8] d.p[3] d.p[7] d.p[4] d.p[11] d.p[5] d.p[10] */ (void)Glue(Clock(d.p[0][0]), d.p[6][3],1,TRUE); (void)Glue(Clock(d.p[0][1]), d.p[6][2],1,TRUE); (void)Glue(Clock(d.p[0][2]), d.p[6][1],1,TRUE); (void)Glue(Clock(d.p[0][3]), d.p[6][0],1,TRUE); (void)Glue(Clock(d.p[0][4]), d.p[6][4],1,TRUE); (void)Glue(Clock(d.p[1][0]), d.p[9][3],1,TRUE); (void)Glue(Clock(d.p[1][1]), d.p[9][2],1,TRUE); (void)Glue(Clock(d.p[1][2]), d.p[9][1],1,TRUE); (void)Glue(Clock(d.p[1][3]), d.p[9][0],1,TRUE); (void)Glue(Clock(d.p[1][4]), d.p[9][4],1,TRUE); (void)Glue(Clock(d.p[2][0]), d.p[8][3],1,TRUE); (void)Glue(Clock(d.p[2][1]), d.p[8][2],1,TRUE); (void)Glue(Clock(d.p[2][2]), d.p[8][1],1,TRUE); (void)Glue(Clock(d.p[2][3]), d.p[8][0],1,TRUE); (void)Glue(Clock(d.p[2][4]), d.p[8][4],1,TRUE); (void)Glue(Clock(d.p[3][0]), d.p[7][3],1,TRUE); (void)Glue(Clock(d.p[3][1]), d.p[7][2],1,TRUE); (void)Glue(Clock(d.p[3][2]), d.p[7][1],1,TRUE); (void)Glue(Clock(d.p[3][3]), d.p[7][0],1,TRUE); (void)Glue(Clock(d.p[3][4]), d.p[7][4],1,TRUE); (void)Glue(Clock(d.p[4][0]), d.p[11][3],1,TRUE); (void)Glue(Clock(d.p[4][1]), d.p[11][2],1,TRUE); (void)Glue(Clock(d.p[4][2]), d.p[11][1],1,TRUE); (void)Glue(Clock(d.p[4][3]), d.p[11][0],1,TRUE); (void)Glue(Clock(d.p[4][4]), d.p[11][4],1,TRUE); (void)Glue(Clock(d.p[5][0]), d.p[10][3],1,TRUE); (void)Glue(Clock(d.p[5][1]), d.p[10][2],1,TRUE); (void)Glue(Clock(d.p[5][2]), d.p[10][1],1,TRUE); (void)Glue(Clock(d.p[5][3]), d.p[10][0],1,TRUE); (void)Glue(Clock(d.p[5][4]), d.p[10][4],1,TRUE); fprintf(stderr, "Building topology of Lens4 :\n"); /* Return one @place not kill by the Glue Procedure */ return d.p[0][0]; } } Place_t MakeLens5(void) { TwelveByFivePlaces_t d = TriangulatedDodecahedron2(); { /* the opposite walls are: d.p[0] d.p[6] d.p[1] d.p[9] d.p[2] d.p[8] d.p[3] d.p[7] d.p[4] d.p[11] d.p[5] d.p[10] */ (void)Glue(Clock(d.p[0][0]), d.p[6][4],1,TRUE); (void)Glue(Clock(d.p[0][1]), d.p[6][3],1,TRUE); (void)Glue(Clock(d.p[0][2]), d.p[6][2],1,TRUE); (void)Glue(Clock(d.p[0][3]), d.p[6][1],1,TRUE); (void)Glue(Clock(d.p[0][4]), d.p[6][0],1,TRUE); (void)Glue(Clock(d.p[1][0]), d.p[9][4],1,TRUE); (void)Glue(Clock(d.p[1][1]), d.p[9][3],1,TRUE); (void)Glue(Clock(d.p[1][2]), d.p[9][2],1,TRUE); (void)Glue(Clock(d.p[1][3]), d.p[9][1],1,TRUE); (void)Glue(Clock(d.p[1][4]), d.p[9][0],1,TRUE); (void)Glue(Clock(d.p[2][0]), d.p[8][4],1,TRUE); (void)Glue(Clock(d.p[2][1]), d.p[8][3],1,TRUE); (void)Glue(Clock(d.p[2][2]), d.p[8][2],1,TRUE); (void)Glue(Clock(d.p[2][3]), d.p[8][1],1,TRUE); (void)Glue(Clock(d.p[2][4]), d.p[8][0],1,TRUE); (void)Glue(Clock(d.p[3][0]), d.p[7][4],1,TRUE); (void)Glue(Clock(d.p[3][1]), d.p[7][3],1,TRUE); (void)Glue(Clock(d.p[3][2]), d.p[7][2],1,TRUE); (void)Glue(Clock(d.p[3][3]), d.p[7][1],1,TRUE); (void)Glue(Clock(d.p[3][4]), d.p[7][0],1,TRUE); (void)Glue(Clock(d.p[4][0]), d.p[11][4],1,TRUE); (void)Glue(Clock(d.p[4][1]), d.p[11][3],1,TRUE); (void)Glue(Clock(d.p[4][2]), d.p[11][2],1,TRUE); (void)Glue(Clock(d.p[4][3]), d.p[11][1],1,TRUE); (void)Glue(Clock(d.p[4][4]), d.p[11][0],1,TRUE); (void)Glue(Clock(d.p[5][0]), d.p[10][4],1,TRUE); (void)Glue(Clock(d.p[5][1]), d.p[10][3],1,TRUE); (void)Glue(Clock(d.p[5][2]), d.p[10][2],1,TRUE); (void)Glue(Clock(d.p[5][3]), d.p[10][1],1,TRUE); (void)Glue(Clock(d.p[5][4]), d.p[10][0],1,TRUE); fprintf(stderr, "Building topology of Lens5 :\n"); /* Return one @place not kill by the Glue Procedure */ return d.p[0][0]; } } #define Lens_C_author \ "Created by L. A. P. Lozada, 1999-2000.\n" \ "Modification history:"