function scara(d1, d2, t1, t2) R = d1 + d2; r = d1 - d2; r1 = [d1 * cos(t1), d1 * sin(t1)]; r2 = r1 + [d2 * cos(t1 + t2), d2 * sin(t1 + t2)]; cr = R / 30; xmin = -1.1 * R; xmax = 1.1 * R; ymin = -0.1 * R; ymax = 1.1 * R; aRmin = 180 / %pi * atan(ymin, R); armin = 180 / %pi * atan(max(-r, ymin), r); subplot(2, 1, 1); plot(0, 0); plot(0, 0); m = d1 + d2; isoview xfarc(-cr, cr, 2 * cr, 2 * cr, 0, 360 * 64); xfarc(r1(1, 1) - cr, r1(1, 2) + cr, 2 * cr, 2 * cr, 0, 360 * 64); xfarc(r2(1, 1) - cr, r2(1, 2) + cr, 2 * cr, 2 * cr, 0, 360 * 64); xarc(-R, R, 2 * R , 2 * R, aRmin * 64, (180 - 2 * aRmin) * 64); xarc(-r, r, 2 * r , 2 * r, armin * 64, (180 - 2 * armin) * 64); xgrid; ax = gca(); ax.font_size = 3; h1 = ax.children(7).children(1); h2 = ax.children(6).children(1); h3 = ax.children(5); h4 = ax.children(4); h5 = ax.children(3); h6 = ax.children(2); h7 = ax.children(1); h1.thickness = 10; h2.thickness = 3; h2.foreground = 5; h4.background = 3; h5.background = 6; h6.foreground = 14; h7.foreground = 14; t1 = 180 * t1 / %pi; t2 = 180 * t2 / %pi; tMin = min([t1; t2]); tMax = max([t1; t2]); tm = ((1:length(t1))-1)' * 0.1; subplot(2, 1, 2); plot(tm(1), tMin, tm($), tMax, 0, 0); xgrid; h = legend('$\theta_1$', '$\theta_2$'); h.font_size = 5; ax = gca(); ax.font_size = 3; g1 = ax.children(2).children(3); g2 = ax.children(2).children(2); g3 = ax.children(2).children(1); g1.thickness = 2; g2.thickness = 2; g3.foreground = 6; realtimeinit(0.1); for i = 1:size(r1, 1) realtime(i); h1.data = [0, 0; r1(i, 1), r1(i, 2); r2(i, 1), r2(i, 2)]; h2.data = [r2(1:i, :)]; h4.data = [r1(i, 1) - cr, r1(i, 2) + cr, 2 * cr, 2 * cr, 0, 360 * 64]; h5.data = [r2(i, 1) - cr, r2(i, 2) + cr, 2 * cr, 2 * cr, 0, 360 * 64]; g1.data = [tm(1:i), t1(1:i)]; g2.data = [tm(1:i), t2(1:i)]; g3.data = [tm(i), tMin; tm(i), tMax]; end endfunction