Raw File
drawmodel_double.m
function h = drawmodel_double(w1, x1, w2, x2, footposn, h)
% drawmodel(w, x, footposn) draws the 2-d rimless wheel with the foot located at
%   footposn
% h = drawmodel(w) draws the model at its fixed point and a position zero
%   and returns the handle to the graphic

% Art Kuo

% if nargin < 2
%   x = get(w, 'xstar'); % assume fixed point if no other info
% end
% 
% if nargin < 3
%   footposn = [0; 0];
% end



parms = get(w1,'parms'); alpha = parms.alpha;

nlegs = floor(pi / (2*alpha)); % roughly the right number of legs
hnlegs = floor(nlegs / 2); % half the number of legs

% form matrices of the x and y positions of line segments
% where one column is a list of positions for a connected line
% and each additional column is a separate line

q1_1 = x1(1);
hubx = -sin(q1_1) + footposn(1); huby = cos(q1_1) + footposn(2);
angles_1 = (-hnlegs:hnlegs) *2*alpha;
legsx_1 = [sin(-q1_1 + angles_1); sin(-q1_1 + angles_1 + pi)] + hubx;
legsy_1 = [cos(-q1_1 + angles_1); cos(-q1_1 + angles_1 + pi)] + huby;

q1_2 = x2(1);
hubx = -sin(q1_2) + footposn(1); huby = cos(q1_2) + footposn(2);
angles_2 = (-hnlegs:hnlegs) *2*alpha;
legsx_2 = [sin(-q1_2 + angles_2); sin(-q1_2 + angles_2 + pi)] + hubx;
legsy_2 = [cos(-q1_2 + angles_2); cos(-q1_2 + angles_2 + pi)] + huby;


legsx = [legsx_1 legsx_2];
legsy = [legsy_1 legsy_2];

if nargin < 6,
  h = line(legsx, legsy, 'LineWidth',2,'EraseMode','background','Color','Blue');
else
  for j = 1:length(h)
    set(h(j),'Xdata',legsx(:,j), 'Ydata', legsy(:,j));
  end
end

back to top