function [] = drawskewtraj(omega, theta)
%DRAWSKEWTRAJ generates a graphical description of a screw over a series
% of thetas
%
% DRAWSKEWTRAJ(OMEGA, THETA)
%
% OMEGA is the skew; THETA is a row vector of the different values of theta
% in the trajectory.
%
% See also: DRAWJACOB, DRAWTWIST, DRAWTWISTTRAJ.
% $Id: drawskewtraj.m,v 1.1 2009-03-17 16:40:18 bradleyk Exp $
% Copyright (C) 2005, by Brad Kratochvil
if ~isequal([3 1], size(omega)),
if ~isskew(omega),
error('SCREWS:drawskewtraj', 'omega is not a skew');
end
% turn it back into a vector
omega = skewcoords(omega);
end
hchek = ishold;
hold on
t = skewexp(omega, theta);
n = size(t, 3);
% initialize
X = zeros(n,4);
Y = zeros(n,4);
Z = zeros(n,4);
T = eye(4);
for j=1:n,
T(1:3, 1:3) = t(:,:,j);
X = [X;(T * [1;0;0;1])']; % for the x axis
Y = [Y;(T * [0;1;0;1])'];
Z = [Z;(T * [0;0;1;1])'];
end
line(X(:,1),X(:,2),X(:,3), 'LineStyle', '-.', 'color', [0.5 0 0])
line(Y(:,1),Y(:,2),Y(:,3), 'LineStyle', '-.', 'color', [0 0.5 0])
line(Z(:,1),Z(:,2),Z(:,3), 'LineStyle', '-.', 'color', [0 0 0.5])
% final point
arrow3([0;0;0], t(1:3,1,n), [1 0 0]);
arrow3([0;0;0], t(1:3,2,n), [0 1 0]);
arrow3([0;0;0], t(1:3,3,n), [0 0 1]);
if hchek == 0
hold off
end
end