Td_thigh=[ones(1,1,nFrames),zeros(1,3,nFrames);zeros(3,4,nFrames)];
r3_thigh(i,:)=cross(r1_thigh(i,:),r2_thigh(i,:));
r4_thigh(i,:)=cross(r3_thigh(i,:),r1_thigh(i,:));
xhat_thigh(i,:)=r3_thigh(i,:)./norm(r3_thigh(i,:));
yhat_thigh(i,:)=r1_thigh(i,:)./norm(r1_thigh(i,:));
zhat_thigh(i,:)=r4_thigh(i,:)./norm(r4_thigh(i,:));
Td_thigh(j+1,1,i)=(RTIP(i,j))';
Td_thigh(j+1,2,i)=(xhat_thigh(i,j))';
Td_thigh(j+1,3,i)=(yhat_thigh(i,j))';
Td_thigh(j+1,4,i)=(zhat_thigh(i,j))';
Td_shank=[ones(1,1,nFrames),zeros(1,3,nFrames);zeros(3,4,nFrames)];
r3_shank(i,:)=cross(r1_shank(i,:),r2_shank(i,:));
r4_shank(i,:)=cross(r3_shank(i,:),r1_shank(i,:));
xhat_shank(i,:)=r3_shank(i,:)./norm(r3_shank(i,:));
yhat_shank(i,:)=r1_shank(i,:)./norm(r1_shank(i,:));
zhat_shank(i,:)=r4_shank(i,:)./norm(r4_shank(i,:));
Td_shank(j+1,1,i)=(RSIP(i,j))';
Td_shank(j+1,2,i)=(xhat_shank(i,j))';
Td_shank(j+1,3,i)=(yhat_shank(i,j))';
Td_shank(j+1,4,i)=(zhat_shank(i,j))';
view(azimuth, elevation);
numFrames = size(Td_thigh, 3);
hXAxis_thigh = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);
hYAxis_thigh = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);
hZAxis_thigh = line([0 0], [0 0], [0 0], 'Color', 'b', 'LineWidth', 2);
hXAxis_shank = line([0 0], [0 0], [0 0], 'Color', 'r', 'LineWidth', 2);
hYAxis_shank = line([0 0], [0 0], [0 0], 'Color', 'g', 'LineWidth', 2);
hZAxis_shank = line([0 0], [0 0], [0 0], 'Color', 'b', 'LineWidth', 2);
R_thigh = Td_thigh(2:4, 2:4, i);
origin_thigh = Td_thigh(2:4, 1, i);
xAxisEndPoint_thigh = origin_thigh + axisLength * R_thigh(1,:)';
yAxisEndPoint_thigh = origin_thigh + axisLength * R_thigh(2,:)';
zAxisEndPoint_thigh = origin_thigh + axisLength * R_thigh(3,:)';
set(hXAxis_thigh, 'XData', [origin_thigh(1), xAxisEndPoint_thigh(1)], 'YData', [origin_thigh(2), xAxisEndPoint_thigh(2)], 'ZData', [origin_thigh(3), xAxisEndPoint_thigh(3)]);
set(hYAxis_thigh, 'XData', [origin_thigh(1), yAxisEndPoint_thigh(1)], 'YData', [origin_thigh(2), yAxisEndPoint_thigh(2)], 'ZData', [origin_thigh(3), yAxisEndPoint_thigh(3)]);
set(hZAxis_thigh, 'XData', [origin_thigh(1), zAxisEndPoint_thigh(1)], 'YData', [origin_thigh(2), zAxisEndPoint_thigh(2)], 'ZData', [origin_thigh(3), zAxisEndPoint_thigh(3)]);
R_shank = Td_shank(2:4, 2:4, i);
origin_shank = Td_shank(2:4, 1, i);
xAxisEndPoint_shank = origin_shank + axisLength * R_shank(1,:)';
yAxisEndPoint_shank = origin_shank + axisLength * R_shank(2,:)';
zAxisEndPoint_shank = origin_shank + axisLength * R_shank(3,:)';
set(hXAxis_shank, 'XData', [origin_shank(1), xAxisEndPoint_shank(1)], 'YData', [origin_shank(2), xAxisEndPoint_shank(2)], 'ZData', [origin_shank(3), xAxisEndPoint_shank(3)]);
set(hYAxis_shank, 'XData', [origin_shank(1), yAxisEndPoint_shank(1)], 'YData', [origin_shank(2), yAxisEndPoint_shank(2)], 'ZData', [origin_shank(3), yAxisEndPoint_shank(3)]);
set(hZAxis_shank, 'XData', [origin_shank(1), zAxisEndPoint_shank(1)], 'YData', [origin_shank(2), zAxisEndPoint_shank(2)], 'ZData', [origin_shank(3), zAxisEndPoint_shank(3)]);