• Remix
  • Share
  • New Entry

on 15 Nov 2023
  • 21
  • 36
  • 0
  • 1
  • 1041
drawframe(1);
Write your drawframe function below
function drawframe(f)
clf
t = interp1([0 48],[0 2*pi],f);
angle = pi/4*sin(t)+pi/4;
phi = 4*angle;
theta = angle;
% This defines who the parent is for each patch
parentList = [0 1 2 3 3 2];
nPatches = length(parentList);
hgtList = zeros(size(parentList));
% First make the transform objects
for i = 1:nPatches
hgtList(i) = hgtransform;
end
X = [0 0 1 1];
Y = [0 1 1 0];
color = parula(nPatches);
for i = 1:nPatches
% Each patch has a parent hgtransform, and that hgtransform has as its
% parent another hgtransform as defined by the parent list.
ph(i) = patch(X,Y,color(i,:),'Parent',hgtList(i));
if parentList(i) > 0
set(hgtList(i),'Parent',hgtList(parentList(i)))
end
end
% Display
axis off
axis equal
axis vis3d
set(gca,'CameraPosition',[-21 -28 21])
set(gca,'CameraTarget',[0 1 1])
drawnow update
set(gcf,'Color','white')
T = makehgtform('translate', 0, 1, 0);
R = makehgtform('xrotate',theta);
set(hgtList(2),'Matrix',T*R);
T = makehgtform('translate', 0, 1, 0);
R = makehgtform('xrotate',theta);
set(hgtList(3),'Matrix',T*R);
T = makehgtform('translate', 0, 1, 0);
R = makehgtform('xrotate',theta);
set(hgtList(4),'Matrix',T*R);
T = makehgtform('translate', 1, 0, 0);
R = makehgtform('yrotate',-theta);
set(hgtList(5),'Matrix',T*R);
T = makehgtform('translate',0, 0, 0);
R = makehgtform('yrotate',pi + theta);
set(hgtList(6),'Matrix',T*R);
end
Animation
Remix Tree