function  ob = fcone(Ra,ha,x0,y0,z0,or,tp)
% function  ob = fcone(Ra,ha,x0,y0,z0,or,tp)
% Ra = rayon de la base
% ha = hauteur
% x0 = position en x
% y0 = position en y
% z0 = position en z
% or = orientation (11=axe X pos;12=axe X nég;21=axe Y pos;22=axe Y nég;
%                   31=axe Z pos;32=axe Z nég)
% tp = type (1=surf;2=surfl)

[ra,th]=meshgrid(0:Ra/10:Ra,0:pi/20:2*pi);
x=ra.*cos(th);
y=ra.*sin(th);
z=ha-ha*ra/Ra;

switch tp
case 1   
   switch or
   case 11
      ob=surf(z+x0,x+y0,y+z0);
   case 12
      ob=surf(-z+x0,x+y0,y+z0);
   case 21
      ob=surf(x+x0,z+y0,y+z0);
   case 22
      ob=surf(x+x0,-z+y0,y+z0);
   case 31
      ob=surf(x+x0,y+y0,z+z0);
   case 32
      ob=surf(x+x0,y+y0,-z+z0);
   end   
case 2
   switch or
   case 11
      ob=surfl(z+x0,x+y0,y+z0);
   case 12
      ob=surfl(-z+x0,x+y0,y+z0);
   case 21
      ob=surfl(x+x0,z+y0,y+z0);
   case 22
      ob=surfl(x+x0,-z+y0,y+z0);
   case 31
      ob=surfl(x+x0,y+y0,z+z0);
   case 32
      ob=surfl(x+x0,y+y0,-z+z0);
   end   
end

%© by Cédric Blaser / 27.11.2001