feat: add oceans sketch
This commit is contained in:
36
ocean.py
Normal file
36
ocean.py
Normal 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()
|
||||
Reference in New Issue
Block a user