import numpy as np import vsketch from vpype import UNITS class Ocean(vsketch.SketchClass): num_line = vsketch.Param(100, 1) y_offset = vsketch.Param(19.0) x_freq = vsketch.Param(0.25) y_freq = vsketch.Param(18) tilt = vsketch.Param(-45, -90, 90) move_x = vsketch.Param(200.0, -1000, 1000) move_y = vsketch.Param(0.0, -1000, 1000) move_z = vsketch.Param(60.0, -1000, 1000) def draw(self, vsk: vsketch.Vsketch) -> None: vsk.size("a4", landscape=True) vsk.scale("cm") #vsk.penWidth(0.1) x_coords = np.linspace(0, 25, 1000) perlin = vsk.noise( x_coords * self.x_freq, np.arange(self.num_line) / self.num_line * self.y_freq ) for i in range(self.num_line): y_coords = perlin[:, i] + self.y_offset / self.num_line * i vsk.polygon(x_coords, y_coords) vsk.vpype(f"perspective --move {self.move_x} {self.move_y} {self.move_z} --tilt {self.tilt}") def finalize(self, vsk: vsketch.Vsketch) -> None: vsk.vpype("linemerge linesimplify reloop linesort") if __name__ == "__main__": Ocean.display()