init_code

This commit is contained in:
sky
2025-07-03 17:03:00 +08:00
parent a710c87a2b
commit 89766fe3d1
220 changed files with 479903 additions and 77 deletions

View File

@@ -0,0 +1,64 @@
"""A decorative shapes"""
import pygarment as pyg
def sample_arc(curve, length, stride, n_points, shift=0):
ts = [(shift + i*stride) / length for i in range(n_points)]
verts = [curve.point(t) for t in ts]
for i in range(len(verts)):
verts[i] = [verts[i].real, verts[i].imag]
return verts
def Sun(width, depth, n_rays=8, d_rays=5, **kwargs):
"""Sun-like mark"""
# Outer arc
out_arc = pyg.CircleEdgeFactory.from_three_points(
[0, 0], [width, 0], [width/2, depth]
)
in_arc = pyg.CircleEdgeFactory.from_three_points(
[d_rays, 0], [width - d_rays, 0], [width/2, depth - d_rays]
)
out_curve = out_arc.as_curve()
in_curve = in_arc.as_curve()
# Sample with stride
out_stride = out_arc.length() / n_rays
in_stride = in_arc.length() / n_rays
out_verts = sample_arc(out_curve, out_arc.length(),
out_stride, n_rays, out_stride / 2)
in_verts = sample_arc(in_curve, in_arc.length(), in_stride, n_rays + 1, 0)
# Mix the vertices in the right order
verts = out_verts
for i in range(len(in_verts)):
verts.insert(i*2, in_verts[i])
shape = pyg.EdgeSeqFactory.from_verts(*verts)
return shape, shape
def SIGGRAPH_logo(width, depth=None, **kwargs):
"""Shape of SIGGRAPH Logo (split vertically)"""
filename='./assets/img/siggraph_logo_thick_connection.svg' # NOTE assumes the script is run from the root
# TODOLOW path w.r.t. current file
left_seq, right_seq = pyg.EdgeSeqFactory.halfs_from_svg(
filename, target_height=width)
return left_seq, right_seq
def SVGFile(width, filename, depth=None, **kwargs):
"""Shape loaded from any svg file:
The shape is expected to consist of non-nested loops
each passing through OY once
"""
left_seq, right_seq = pyg.EdgeSeqFactory.halfs_from_svg(
filename, target_height=width)
return left_seq, right_seq