function mat = quatmat(q1)
%  
%  $BEGIN
%  $HEADER quatmat
%
%  Compute the transformation matrix of q1
%
%  $HEADER REFERENCE
%  W. Bean, Operational Use of Quaternions
%  in the Description of Rigid Body Motion,
%  MSC Internal Note #69-FM-237, (1969)
%
%  $HEADER PROGRAMMER
%  John W. Craft, Jr.
%  University of Houston, (2005)
%
%  $HEADER VERSION
%  1.0.0
%
%  Example
%  my_matrix = quatmat(q1)
%
%  See Also quatmult quatrot
%  
%  $END
%


 m11 = (q1(1)*q1(1) + q1(2)*q1(2) - q1(3)*q1(3) - q1(4)*q1(4));

 m22 = (q1(1)*q1(1) - q1(2)*q1(2) + q1(3)*q1(3) - q1(4)*q1(4));

 m33 = (q1(1)*q1(1) - q1(2)*q1(2) - q1(3)*q1(3) + q1(4)*q1(4));
 
 m12 = 2 * (q1(1)*q1(4)  + q1(2)*q1(3));
 
 m13 = 2 * (q1(2)*q1(4)  - q1(1)*q1(3));

 m21 = 2 * (q1(2)*q1(3)  - q1(1)*q1(4));

 m23 = 2 * (q1(1)*q1(2)  + q1(3)*q1(4));

 m31 = 2 * (q1(2)*q1(4)  + q1(1)*q1(3));

 m32 = 2 * (q1(3)*q1(4)  - q1(1)*q1(2));


 mat = [m11 m12 m13; m21 m22 m23; m31 m32 m33];

return

