I think I found a good solution. After I generate a solid with coordinates X, Y, Z, I can plot it using surf:
h = surf(X,Y,Z);
and then I can use that handle to rotate it at my will:
rotate(h,rot_axis,beta,rot_axis);
At this point I need to get my data as if it was an orthogonal projection. To do this, I first set the view to be orthogonal to the xz-plane:
view([0 0])
and then I retrieve the rotated data:
XX = get(h,'xdata');
YY = get(h,'ydata');
ZZ = get(h,'zdata');
As Doug Hull suggested, I can use this data to retrieve the solid projection by taking the min-max for each row (or column). I haven't implemented this part yet but I think it's easy. Thanks!