You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: quadric.m
    path of file: ./repos/Algorithms_MathModels/《基于MATLAB的高等数学问题求解》 随书附带源程序/CH11
    
    the code of the file until where you have to start completion: function varargout=quadric(varargin)
%QUADRIC   绘制二次曲面
% QUADRIC('elliptic',XC,YC,ZC,A,B,N)  绘制椭圆锥面
% QUADRIC('ellipsoid',XC,YC,ZC,A,B,C,N)  绘制椭球面
% QUADRIC('hyperboloidofonesheet',XC,YC,ZC,A,B,C,N)  绘制单叶双曲面
% QUADRIC('hyperboloidoftwosheets',XC,YC,ZC,A,B,C,N)  绘制双叶双曲面
% QUADRIC('ellipticparaboloid',XC,YC,ZC,A,B,N)  绘制椭圆抛物面
% QUADRIC('hyperbolicparaboloid',A,B,N)  绘制双曲抛物面
% H=QUADRIC(...)  绘制二次曲面并返回其句柄
% [X,Y,Z]=QUADRIC(...)  计算二次曲面的坐标数据
%
% 输入参数：

    
function varargout=quadric(varargin)
%QUADRIC   绘制二次曲面
% QUADRIC('elliptic',XC,YC,ZC,A,B,N)  绘制椭圆锥面
% QUADRIC('ellipsoid',XC,YC,ZC,A,B,C,N)  绘制椭球面
% QUADRIC('hyperboloidofonesheet',XC,YC,ZC,A,B,C,N)  绘制单叶双曲面
% QUADRIC('hyperboloidoftwosheets',XC,YC,ZC,A,B,C,N)  绘制双叶双曲面
% QUADRIC('ellipticparaboloid',XC,YC,ZC,A,B,N)  绘制椭圆抛物面
% QUADRIC('hyperbolicparaboloid',A,B,N)  绘制双曲抛物面
% H=QUADRIC(...)  绘制二次曲面并返回其句柄
% [X,Y,Z]=QUADRIC(...)  计算二次曲面的坐标数据
%
% 输入参数：
%     ---XC,YC,ZC：二次曲面的中心坐标
%     ---A,B,C：二次曲面的参数
%     ---N：指定采样点数
%     ---TYPE：指定二次曲面类型，有上述6种取值
% 输出参数：
%     ---H：二次曲面的句柄
%     ---X,Y,Z：二次曲面的坐标数据
%
% See also cylinder, ellipsoid

args=varargin;
type=args{1};
switch lower(type)
    case {1,'elliptic','椭圆锥面'}
        [xc,yc,zc,a,b,n]=deal(args{2:end