Whistle

Script

xmin = 0.01 xmax = 5 ymin(x) = 0 ymax(x) = 3 zmin(x, y) = If(0 ≤ x ≤ 2, -sqrt(1 - (x - 1)²) - 1, log(10, x - 1.9) - 0.1) zmax(x, y) = log(10, x + 0.1) Ly(x) = x ymin(xmin) + (1 - x) ymax(xmin) Lz(x, y) = y zmin(xmin, x * ymin(xmin) + (1 - x) ymax(xmin)) + (1 - y) zmax(xmin, x * ymin(xmin) + (1 - x) ymax(xmin)) left = Surface(xmin, Ly(u), Lz(u, v), u, 0, 1, v, 0, 1) RY(x) = x * ymin(xmax) + (1 - x) ymax(xmax) RZ(x, y) = y * zmin(xmax, x * ymin(xmax) + (1 - x) ymax(xmax)) + (1 - y) zmax(xmax, x * ymin(xmax) + (1 - x) ymax(xmax)) right = Surface(xmax, RY(u), RZ(u, v), u, 0, 1, v, 0, 1) Fx(x) = x / 3 xmin + (1 - x / 3) xmax Fy(x) = ymin(x / 3 xmin + (1 - x / 3) xmax) Fz(x, y) = y / 3 zmin(x / 3 xmin + (1 - x / 3) xmax, ymin(x / 3 xmin + (1 - x / 3) xmax)) + (1 - y / 3) zmax(x / 3 xmin + (1 - x / 3) xmax, ymin(x / 3 xmin + (1 - x / 3) xmax)) front = Surface(Fx(u), Fy(u), Fz(u,v), u, 0, 3, v, 0, 3) Ux(x) = x / 3 xmin + (1 - x / 3) xmax Uy(x, y) = y / 3 ymax(x / 3 xmin + (1 - x / 3) xmax) + (1 - y / 3) ymin(x / 3 xmin + (1 - x / 3) xmax) Uz(x, y) = zmax(x / 3 xmin + (1 - x / 3) xmax, y / 3 ymax(x / 3 xmin + (1 - x / 3) xmax) + (1 - y / 3) ymin(x / 3 xmin + (1 - x / 3) xmax)) up = Surface(Ux(u), Uy(u, v), Uz(u, v), u, 0, 3, v, 0, 3) Bx(x) = x / 3 xmin + (1 - x / 3) xmax By(x) = ymax(x / 3 xmin + (1 - x / 3) xmax) Bz(x, y) = y / 3 zmin(x / 3 xmin + (1 - x / 3) xmax, ymax(x / 3 xmin + (1 - x / 3) xmax)) + (1 - y / 3) zmax(x / 3 xmin + (1 - x / 3) xmax, ymax(x / 3 xmin + (1 - x / 3) xmax)) back = Surface(Bx(u), By(u), Bz(u, v), u, 0, 3, v, 0, 3) Dx(x) = x / 3 xmin + (1 - x / 3) xmax Dy(x, y) = y / 3 ymax(x / 3 xmin + (1 - x / 3) xmax) + (1 - y / 3) ymin(x / 3 xmin + (1 - x / 3) xmax) Dz(x, y) = zmin(x / 3 xmin + (1 - x / 3) xmax, y / 3 ymax(x / 3 xmin + (1 - x / 3) xmax) + (1 - y / 3) ymin(x / 3 xmin + (1 - x / 3) xmax)) down = Surface(Dx(u), Dy(u, v), Dz(u, v), u, 0, 3, v, 0, 3)
Original code by mathmagic. More examples here: https://www.geogebra.org/m/jrmzqk5z