I and some friends of mine have some level suggestions
Duospindle (no idea if that's its common name)
The the convex hull of two circles in orthogonal planes, it is also the dual of duocylinder
I think the equation is sqrt(x^2+y^2)+sqrt(z^2+w^2)=r
Sphone (sphere cone)
A cone with a sphere base, I think it might be fairly boring aside from the end point
The equation should be sqrt(x^2+y^2+z^2)+sqrt(w^2)=r (actually a bicone, w>=0 for cone)
Tiger (you might have this one already but I didn't see it)
Its another generalization of the torus
The equation is pretty complex, the parametric is nicer
Cone torus #1
A cone with a torus base, very similar to the spheritorus
sqrt((c-sqrt(x^2+y^2))^2+z^2)+sqrt(w^2)=a (actually a bicone, w>=0 for cone)
Cone torus #2
I only have an equation for this one, it might be similar to revolving a triangle around the origin but I'm not sure
sqrt(z^2+w^2)<=sqrt(x^2+y^2)<=1
Pinched duocylinder (needs a better name)
When rolled properly it should trace out a torus on the ground like a cone frustum traces an annulus
1-sqrt(x^2+y^2)>=z, sqrt(z^2+w^2)<=1
The one me and my friends are most interested in is the duospindle
I implemented the tiger, sphone, and duospindle here (specifically at 7:03):
The Duo-spindle was really cool. I didn't have to round the manifold to get a good result which was surprising, and it had some interesting features.
It got cut off in the video, but here's the projection function I used for the duospindle in the video:
Proj::proj(vector: vec4) -> vec4 { let xy: vec4 = vec4(vector.x, vector.y, 0, 0); let xy_len: f32 = length(xy); let zw: vec4 = vec4(0, 0, vector.z, vector.w); let zw_len: f32 = length(zw); let d: f32 = clamp(xy_len - zw_len, -r, r); let xy_component: vec4 = select( normalize(xy), vec4(0, 0, 0, 0), xy_len == 0 ) * (r + d); let zw_component: vec4 = select( normalize(zw), vec4(0, 0, 0, 0), zw_len == 0 ) * (r - d); (xy_component + zw_component) / 2 }
The rest of the basic shape code is at 14:31
I'll try some of the other manifolds soon, the pinched duo-cylinder looks interesting.
Your projection function looks a bit different to the one I derived from a cone (https://www.desmos.com/3d/oh3w8e08o9 (last 5 lines)), probably equivalent though.