verts only... almost
import numpy as np
from svrx.util.geom import generator
from svrx.util.smesh import SvVertices
def make_torus(R, r, N1, N2):
t1 = np.linspace(0, np.pi * 2 * (N1 - 1 / N1), N1)
t3 = np.tile(t1, N2)
r1 = np.sin(np.linspace(0, np.pi * 2 * (N2 - 1 / N2), N2))
r3 = np.repeat(r1, N1) * r + R
r2 = np.repeat(np.cos(np.linspace(0, np.pi * 2 * (N2 - 1 / N2), N2)), N1)
circ = np.array([np.cos(t3)*r3, np.sin(t3)*r3, r2*r, np.ones(N1*N2)])
verts = np.transpose(circ)
return verts, None, None
@node_script
@generator
def sn_torus(
R: Float = 2.0, r: Float = 0.6,
N1: Int = 22, N2: Int = 15) -> ([Vertices], [Edges], [Faces]):
return list(make_torus(R, r, N1, N2))