Source code for plato.draw.zdog.Spheropolygons

import numpy as np

from ... import draw, geometry, mesh
from .internal import PolygonRenderer

[docs]class Spheropolygons(draw.Spheropolygons, PolygonRenderer): __doc__ = draw.Spheropolygons.__doc__ def _get_path(self): corner_vertices = geometry.insetPolygon(self.vertices, -self.radius) mesh_object = mesh.spheropolygonMesh(self.vertices, self.radius, 1) result = [] corner_vertices = (corner_vertices*(1, -1))[::-1].tolist() arc_pieces = zip(mesh_object.image*(1, -1), mesh_object.vertex_types) for (vertex, vertex_type) in arc_pieces: if vertex_type == 0 or vertex_type == 2: corner = corner_vertices.pop() if vertex_type == 2: result.append(( "{{arc: [{{x: {corner[0]}, y: {corner[1]}}}," " {{x: {end[0]}, y: {end[1]}}}]}}""").format( corner=corner, end=vertex)) elif vertex_type == 0 or vertex_type == 10: result.append( "{{x: {pos[0]}, y: {pos[1]}}}".format(pos=vertex)) return ', '.join(result) def render(self, *args, **kwargs): if self.outline: kwargs['outline'] = self.outline kwargs['stroke'] = False return PolygonRenderer.render(self, *args, **kwargs)