示例#1
0
    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)
示例#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)
示例#3
0
    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))
示例#4
0
    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)
示例#5
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")
示例#6
0
    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]