# create some layers and groups
layers = {
"Hexagons": svg.layer(label="Hexagons"),
+ "Backfaces": svg.layer(label="Backfaces"),
"Hexaflexagon": svg.layer(label="Hexaflexagon"),
"Folding guide": svg.layer(label="Folding guide"),
"Template": svg.layer(label="Template")
# Draw some default content
old_active_group = self.backend.active_group
self.backend.active_group = self.groups["hexagon%d-content" % hexagon.index]
- self.backend.draw_regular_polygon(cx, cy, 6, self.hexagon_radius, fill_color=(0.5, 0.5, 0.5, 0.2), stroke_color=None)
+ self.backend.draw_regular_polygon(cx, cy, 6, self.hexagon_radius,
+ stroke_color=None,
+ fill_color=(0.5, 0.5, 0.5, 0.2))
self.backend.active_group = old_active_group
# Add folding guides
for triangle in hexagon.triangles:
cx, cy = self.get_triangle_center(triangle)
theta = triangle.get_angle_in_hexagon()
- self.backend.draw_regular_polygon(cx, cy, 3, self.triangle_radius, theta, (0, 0, 0, 0.2))
+ self.backend.draw_regular_polygon(cx, cy, 3, self.triangle_radius, theta,
+ stroke_color=(0, 0, 0, 0.2),
+ fill_color=None)
polygon = self.backend.active_group.elements[-1]
- polygon['id'] = "hexagon%d-triangle%d-folding" % (triangle.hexagon.index, triangle.index)
+ polygon['id'] = "hexagon%d-triangle%d-folding" % (triangle.hexagon.index,
+ triangle.index)
self.backend.active_group = old_active_group
ref['clip-path'] = "url(%s)" % (triangle_href + '-clip-path')
group.add(ref)
+ # draw the backfaces
+ group = self.groups["Backfaces"]
+ for hexagon in self.hexaflexagon.hexagons:
+ for triangle in hexagon.triangles:
+ m = self.get_triangle_backfaces_transform(triangle)
+ svg_matrix = "matrix(%f, %f, %f, %f, %f, %f)" % (m[0], m[3],
+ m[1], m[4],
+ m[2], m[5])
+
+ triangle_href = "#hexagon%d-triangle%d" % (hexagon.index, triangle.index)
+
+ # Reuse the content to draw the backface
+ content_href = "#hexagon%d-content" % hexagon.index
+ ref = self.backend.svg.use(content_href)
+ ref['transform'] = svg_matrix
+ ref['clip-path'] = "url(%s)" % (triangle_href + '-clip-path')
+ group.add(ref)
+
def draw_triangle_template(self, triangle, cx, cy, theta):
old_active_group = self.backend.active_group
group_name = "hexagon%d-triangle%d" % (triangle.hexagon.index, triangle.index)