A Scilab script to make an animation of a block in a rotational motion about the x-axis is shown in Code 1. The animation produced by this script is shown in Movie 1. This script is the same as the one in the last section except the part "Motion data" in the rows 16-18.
// anim_block_rotate.sce clear; xdel(winsid()); exec('eulerXYZ.sci', -1); exec('transver.sci', -1); exec('genpat.sci', -1); exec('calcBlock.sci', -1); // Block spec Lx = 0.15; Ly = 0.05; Lz = 0.30; // Motion data t = (0:0.001:1)'; // Time data position = [0*t, 0*t, 0*t]; // Position data angles = [2*%pi*t, 0*t, 0*t]; // Orientation data (XYZ Euler angles) // Initial patches r_ini = position(1,:)'; R_ini = eulerXYZ(angles(1,1), angles(1,2), angles(1,3)); patches_ini = calcBlock(r_ini, R_ini, Lx, Ly, Lz); // Draw initial figure h_fig = figure; h_fig.background = 8; drawlater(); h_pat = plot3d(patches_ini.x, patches_ini.y, patches_ini.z); h_pat.color_mode = 4; h_pat.foreground = 1; h_pat.hiddencolor = 4; // Axes settings xlabel("x"); ylabel("y"); zlabel("z"); h_axes = gca(); h_axes.isoview = "on"; h_axes.box = "off"; h_axes.rotation_angles = [63.5, -127]; h_axes.data_bounds = [-0.5, -0.5, -0.5; 0.7, 0.5, 0.5]; xgrid; // Compute patches at each time for i = 1:length(t) r = position(i,:)'; R = eulerXYZ(angles(i,1), angles(i,2), angles(i,3)); patches(i) = calcBlock(r, R, Lx, Ly, Lz); end // Animation Loop for i = 1:length(t) drawlater(); h_pat.data.x = patches(i).x; h_pat.data.y = patches(i).y; h_pat.data.z = patches(i).z; drawnow(); end