[general] name = Breather; comments = Breather surface; a1_min = -13.2; a1_max = 13.2; a1_steps = 100; a2_min = -37.4; a2_max = 37.4; a2_steps = 100; [param] name = a; title = a; default = 0.4; min = 0.1; max = 1; [formula] r = 1 - sqr(a); q = sqrt(r); sh = 0.5 * (exp(a * A1) - exp(-a * A1)); // sinh(x) = 1/2 * (e^x - e^-x) ch = 0.5 * (exp(a * A1) + exp(-a * A1)); // cosh(x) = 1/2 * (e^x + e^-x) d = a * (sqr(q * ch) + sqr(a * sin(deg(q * A2)))); C2 = cos(deg(A2)); C3 = cos(deg(q * A2)); S2 = sin(deg(A2)); S3 = sin(deg(q * A2)); X = 0.2 * (-A1 + 2 * r * ch * sh / d); Y = 0.2 * (2 * q * ch * (-(q * C2 * C3) - S2 * S3) / d); Z = 0.2 * (2 * q * ch * (-(q * S2 * C3) + C2 * S3) / d); [preset] name = Shape1; a = 0.4; a1_min = -13.2; a1_max = 13.2; a1_steps = 100; a2_min = -37.4; a2_max = 37.4; a2_steps = 100; [preset] name = Shape2; a = 0.6; a1_min = -8; a1_max = 8; a1_steps = 100; a2_min = -15.55; a2_max = 15.55; a2_steps = 100;