def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=True) vsk.scale("2cm") # build a star angles = np.linspace(0, 2 * np.pi, 5, endpoint=False) idx = [0, 2, 4, 1, 3, 0] x = np.cos(angles[idx] - np.pi / 2) y = np.sin(angles[idx] - np.pi / 2) with vsk.pushMatrix(): for i in range(5): with vsk.pushMatrix(): vsk.scale(0.8**i) vsk.polygon(x, y) vsk.translate(2, 0) vsk.translate(0, 4) for i in range(5): with vsk.pushMatrix(): vsk.rotate(i * 4, degrees=True) vsk.polygon(x, y) vsk.translate(2, 0)
def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=False) vsk.scale("cm") for j in range(self.rows): with vsk.pushMatrix(): for i in range(self.columns): with vsk.pushMatrix(): vsk.rotate(self.fuzziness * 0.03 * vsk.random(-j, j)) vsk.translate( self.fuzziness * 0.01 * vsk.randomGaussian() * j, self.fuzziness * 0.01 * vsk.randomGaussian() * j, ) vsk.rect(0, 0, 1, 1) vsk.translate(1, 0) vsk.translate(0, 1)
def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=True) vsk.scale("cm") vsk.rotate(-90, degrees=True) noise_coord = np.linspace(0, 1, self.point_per_line) dirs = np.linspace(0, 2 * math.pi, self.num_line) perlin = vsk.noise(noise_coord, dirs, [0, 100]) for i, direction in enumerate(dirs): rdir = vsk.map(perlin[:, i, 0], 0, 1, direction - self.rdir_range, direction + self.rdir_range) roffset = vsk.map(perlin[:, i, 1], 0, 1, 0.05, 0.12) xoffset = roffset * np.cos(rdir) yoffset = roffset * np.sin(rdir) vsk.polygon(np.cumsum(xoffset), np.cumsum(yoffset))
def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=True) vsk.scale("cm") # create a stick figure sub = vsketch.Vsketch() sub.detail(0.01) sub.rect(0, 0, 1, 2) sub.circle(0.5, -0.5, 1) sub.line(0, 0, -0.5, 1) sub.line(1, 0, 1.5, 1) sub.line(0, 2, -0.3, 4) sub.line(1, 2, 1.3, 4) for i in range(8): with vsk.pushMatrix(): vsk.scale(0.95**i) vsk.rotate(8 * i, degrees=True) vsk.sketch(sub) vsk.translate(3, 0)
def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=False) vsk.scale("1mm") with vsk.pushMatrix(): for _ in range(40): vsk.rotate(2, degrees=True) vsk.scale(0.95) vsk.point(-75, 75) vsk.point(0, 75) vsk.point(75, 75) vsk.point(75, 0) vsk.point(75, -75) vsk.point(0, -75) vsk.point(-75, -75) vsk.point(-75, 0) with vsk.pushMatrix(): vsk.rotate(80, degrees=True) vsk.scale(0.95**40) vsk.square(0, 0, 150, mode="center")
def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a6", landscape=False) vsk.scale(self.scale_factor) vsk.rotate(self.rotation, degrees=True) N = 20 angles = np.array(random.sample(range(N), self.segment_count), dtype=float) angles *= 2 * math.pi / N x = np.cos(angles) y = np.sin(angles) speeds = np.random.uniform(-1, 1, (self.segment_count, 2)) speeds *= self.delta / np.hypot(speeds[:, 0], speeds[:, 1]).reshape( -1, 1) for _ in range(self.line_count): vsk.polygon(x, y) x += speeds[:, 0] y += speeds[:, 1]