A MATLAB script to draw a cylinder shape in a general configuration is shown in Code 1. The result of the drawing by this script is shown in Figure 1.
% make_cylinder_general.m
clear; close all;
% Reference position
r = [1; 1; 1];
% Reference orientation
R = eulerXYZ(-pi/3, 0, 0);
% Cylinder spec
Radius = 0.1;
Height = 0.3;
SideCount = 20;
% Vertices
vertices_0 = zeros(2*SideCount, 3);
for i = 1:SideCount
theta = 2*pi/SideCount*(i-1);
vertices_0(i,:) = [Radius*cos(theta), Radius*sin(theta), 0];
vertices_0(SideCount+i,:) = [Radius*cos(theta), Radius*sin(theta), Height];
end
vertices = r' + vertices_0*R';
% Side faces
sideFaces = zeros(SideCount, 4);
for i = 1:(SideCount-1)
sideFaces(i,:) = [i, i+1, SideCount+i+1, SideCount+i];
end
sideFaces(SideCount,:) = [SideCount, 1, SideCount+1, 2*SideCount];
% Bottom faces
bottomFaces = [
1:SideCount;
(SideCount+1):2*SideCount];
% Draw patches
figure(1);
h_side = patch('Faces', sideFaces, 'Vertices', vertices, 'FaceColor', 'y');
h_bottom = patch('Faces', bottomFaces, 'Vertices', vertices, 'FaceColor', 'y');
% Axes settings
xlabel('x'); ylabel('y'); zlabel('z');
axis vis3d equal;
view([-37.5, 30]);
camlight;
grid on;
xlim([0.8, 1.3]);
ylim([0.9, 1.4]);
zlim([0.8, 1.3]);