I wrote a function that makes a cone frustum to be added to trunk/asymptote/base/solids.asy
// Return a right circular conical frustum of height h in the direction of axis. // The lower base of radius r1 is centered at C, the upper base has radius r2. revolution cone_frustum(triple C, real r1, real r2, real h, triple axis=Z) { return revolution(C, (r1,0,0)--(r2,0,h), axis); }
I'm sorry I didn't submit a pull request or something like that, but I had a hard time finding out how to do it in here.
I'm sorry, I must be too tired; I gave you the wrong thing. It should be this way:
Because the previous code din't account for xyz shifts with respect to C.