[general] name = Dupin; comments = Dupin's Cyclide. Pierre Charles Francois Dupin (1784-1873).; a1_min = 0; a1_max = 360; a1_steps = 60; a2_min = 0; a2_max = 360; a2_steps = 60; [param] name = a; title = a; default = 1; min = 0.01; max = 10; [param] name = b; title = b; default = 1; min = 0.01; max = 1; [param] name = c; title = c; default = 0; min = 0.01; max = 10; [param] name = d; title = d; default = 1; min = 0.01; max = 10; [formula] I0 = linstep(0.000001,0,a-c); I1 = 1 - I0; T1 = 1 / (I1 * (a - c * cos(A1) * cos(A2)) + I0 * 0.000001); X = (d * (c - a * cos(A1) * cos(A2)) + b*b * cos(A1)) * T1; Y = (b * sin(A2) * (c * cos(A1) - d)) * T1; Z = -(b * sin(A1) * (a - d * cos(A2))) * T1; [preset] name = Torus (a = b); a = 1; b = 1; c = 0; d = 0.5; a1_min = 0; a1_max = 360; a1_steps = 60; a2_min = 0; a2_max = 360; a2_steps = 60; [preset] name = Symmetric Crescents (0 = d < c); a = 1; b = 1; c = 0.5; d = 0; [preset] name = Crescents (0 < d < c); a = 1; b = 1; c = 0.5; d = 0.1; [preset] name = Single Crescent (b = d); a = 1; b = 0.8; c = 0.6; d = 0.8; [preset] name = Spindle Cyclide (d > a); a = 1; b = 1; c = 0; d = 1.5;