spheroid:= proc(c,u,v,w) 
   local p,t,cc;
   if nargs = 5 then cc := args[5] else cc := tan fi; 
   plot3d(evl(c+ cos(p)*u +sin(p)*(cos(t)*v + sin(t)*w)),
     p=0..Pi, t = 0 .. 2*Pi,style=patch,grid=[8,8],colour=cc) 
end;

skier:= proc(R,T,C,B,U) local y1,y2,h1,h2, a, a1,a2;
  h1:= .3*U &. B; y1:= .6 - h1; h2:= -h1;
  a1:= fsolve((.4+.4*cos(a))^2+(y1-.4*sin(a))^2-.36);
  y2:= 1.2 - y1;
  a2:= fsolve((.4+.4*cos(a))^2+(y2-.4*sin(a))^2-.36);
  display({
    spheroid(R+.75*B,.5*T+.1*B,-.04*T+.2*B,.3*C),
    spheroid(R+.25*T+.2*C+.6*B,.25*T-.1*C,.02*T+.05*C,.06*B,brown),
    spheroid(R+.25*T-.2*C+.6*B,.25*T+.1*C,.02*T-.05*C,.06*B,brown),
    spheroid(R+.5*T+.8*B,.15*T,.15*C,.15*B,black),
    spheroid(R+(-.2+.2*cos(a1))*T+.15*C+(.3+h1/2+.2*sin(a1))*B,
      (.2+.2*cos(a1))*T+(h1/2-.3+.2*sin(a1))*B+.05*C,.13*C,
      (-.15*h1-.09+.06*sin(a1))*T-.06*(1+cos(a1))*B,brown),
    spheroid(R+.2*cos(a1)*T+.2*C+(h1+.2*sin(a1))*B,
      .2*cos(a1)*T+.2*sin(a1)*B,.1*C,-.05*sin(a1)*T+.05*cos(a1)*B,brown),
    spheroid(R+(-.2+.2*cos(a2))*T-.15*C+(.3+h2/2+.2*sin(a2))*B,
      (.2+.2*cos(a2))*T+(h2/2-.3+.2*sin(a2))*B-.05*C,.13*C,
      (-.15*h1-.09+.06*sin(a2))*T-.06*(1+cos(a2))*B,brown),
    spheroid(R+.2*cos(a2)*T-.2*C+(h2+.2*sin(a2))*B,
      .2*cos(a2)*T+.2*sin(a2)*B,-.1*C,-.05*sin(a2)*T+.05*cos(a2)*B,brown)}) 
end;