feat: add oceans sketch

This commit is contained in:
2025-05-28 21:04:22 +02:00
commit b2ff18e76d
5 changed files with 137 additions and 0 deletions

36
ocean.py Normal file
View File

@@ -0,0 +1,36 @@
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()