%GRIPPER    Gripper
% Draws gripper
%
% Syntax:  gripper(T, theta)
%
% Inputs:
%    T - 4x4 homogeneous rotation matrix
%    theta - angle of links 
%            0 open; pi/4 closed
%
% Other m-files required: closedCylinder.m

% Author: Travis Hydzik
% Last revision: 19 October 2004

function gripper(T, theta)

    warning off all;

    % gripper link lengths
    d = 0.3;
    
    s30 = sin(pi/6); % sin(30)
    c30 = cos(pi/6); % cos(30)
    
    [X, Y, Z] = closedCylinder(T*[0 0 0 1]', T*[ c30*d*cos(theta) s30*d*cos(theta) d*sin(theta) 1]', 0.05);
    surfl(X,Y,Z);
    [X, Y, Z] = closedCylinder(T*[0 0 0 1]', T*[-c30*d*cos(theta) s30*d*cos(theta) d*sin(theta) 1]', 0.05);
    surfl(X,Y,Z);
    [X, Y, Z] = closedCylinder(T*[0 0 0 1]', T*[ 0 -d*cos(theta) d*sin(theta) 1]', 0.05);
    surfl(X,Y,Z);
    
    beta = (pi/2) - theta; % angle between links of gripper
    
    [X, Y, Z] = closedCylinder(T*[ c30*d*cos(theta) s30*d*cos(theta) d*sin(theta) 1]', T*[c30*d*(cos(theta) - cos(beta)) s30*d*(cos(theta) - cos(beta)) d*(sin(theta) + sin(beta)) 1]', 0.05);
    surfl(X,Y,Z);
    [X, Y, Z] = closedCylinder(T*[-c30*d*cos(theta) s30*d*cos(theta) d*sin(theta) 1]', T*[-c30*d*(cos(theta) - cos(beta)) s30*d*(cos(theta) - cos(beta)) d*(sin(theta) + sin(beta)) 1]', 0.05);
    surfl(X,Y,Z);
    [X, Y, Z] = closedCylinder(T*[ 0 -d*cos(theta) d*sin(theta) 1]', T*[ 0 -d*(cos(theta) - cos(beta)) d*(sin(theta) + sin(beta)) 1]', 0.05);
    surfl(X,Y,Z);