Im Jahr 1929 endtdeckte Paul Schatz, dass sich ein aus einem Würfel herausgeschnittener Tetraaeder-Ring umstülpen lässt. Sein Buch heisst denn auch - Die Welt ist umstülpbar -. Aus Symmetriegründen ist auch ein Tetraeder-Ring umstülpbar, welcher die aus dem Würfel herausgeschnittenen Tetraeder verdoppelt, wie in dieser Filmsequenz gezeigt wird.
%function tetringfilms
% tetringfilms.m Simulation des Umstuelpens eines Rings
% aus 6 verlaengerten Tetraedern
% Version mit patches von verschiedenen transparenten Farben
% standalone Version fuer M-File Sammlung
r=7.5;
s = 1;
h = sqrt(3)/2;
d = 1.0;
f = 0.93;
%
oxa = gca;
figure(1); clf;
axtn = axes('outerposition',[0.34 0 0.66 1]);
axis([-10 10 -10 10])
set( axtn, 'DataAspectRatio', [1 1 1] )
axis(axtn ,'off')
%
hdtxa = text(-8,9,'Tetraeder-Ring', ...
'FontUnits','points','FontSize',24, ...
'Fontweight','demi');
hdtxb = text(-8,7.2,'umstuelpen', ...
'FontUnits','points','FontSize',24 , ...
'Fontweight','demi');
A =[-8 -8 -8]'; B =[-8 8 -8]';
C =[ 8 8 -8]'; D =[ 8 -8 -8]';
E =[-8 -8 8]'; F =[-8 8 8]';
G =[ 8 8 8]'; H =[ 8 -8 8]';
bxlin = [A B C D A E F B F G C G H D H E];
% einbetten
newxa = axes('position',[0.35 0 0.65 0.8]);
hold on
set( gca, 'DataAspectRatio', [1 1 1] )
view(-70, 36);
axis off
%
p1 = [d 0 0 0]' + [0 h 0 0]' + [0 0 s/2 0]' + [0 0 0 1]';
p2 = [d 0 0 0]' + [0 h 0 0]' - [0 0 s/2 0]' + [0 0 0 1]';
p3 = [d-s/2 0 0 1]';
p4 = [d+s/2 0 0 1]';
zt = (p1 + p2 + p3 + p4)/4;
zt(4) = 1;
Zm = zt * ones(1,8);
To= [p1 p2 p3 p1 p4 p3 p4 p2];
sind1 = [1 2 3]; sind2 = [1 2 5];
sind3 = [1 3 5]; sind4 = [2 3 5];
%
px0 = [0 0 0]';
px1 = [s 0 0]';
px2 = [-s/2 s*sqrt(3)/2 0]';
px3 = [-s/2 -s*sqrt(3)/2 0]';
pxo = [ 0 0 1]';
pxu = [0 0 -1]';
%
Xa = r*1.2*[px0 px1 px0 px2 px0 px3 px0 pxo pxu];
hdtrax = plot3( Xa(1,1:7), Xa(2,1:7), Xa(3,1:7),'k');
%
To = Zm + f*(To-Zm);
Tk = [p1 p2 p3 p1 p4 p3 p4 p2];
%
Mv = [1 0 0 -d ; 0 1 0 0; 0 0 1 0; 0 0 0 1] ;
Mi = [1 0 0 0 ; 0 -1 0 0; 0 0 1 0; 0 0 0 1] ;
Rt = [cos(120*pi/180) -sin(120*pi/180) 0 0 ;
sin(120*pi/180) cos(120*pi/180) 0 0; 0 0 1 0; 0 0 0 1] ;
%
w=(0:1:360)*pi/180;
al = atan(sqrt(3)*sin(w));
xca = h*(cos(al)/sqrt(3) + tan(al)/sqrt(3).*sin(al));
%
Plm = [r 0 0 0; 0 r 0 0 ; 0 0 r 0; 0 0 0 1];
%
for k = 1:length(w)
Ra = [ 1 0 0 0; 0 cos(al(k)) -sin(al(k)) 0; 0 sin(al(k)) cos(al(k)) 0 ;
0 0 0 1] ;
Rw = [ cos(w(k)) 0 -sin(w(k)) 0; 0 1 0 0; sin(w(k)) 0 cos(w(k)) 0;
0 0 0 1];
xc = h* ( cos(w(k))/sqrt(3) + sin(w(k))*sin(al(k)) ) ;
Mb = [1 0 0 xca(k) ; 0 1 0 0; 0 0 1 0; 0 0 0 1] ;
Tt =Plm* Mb*Rw*Ra*Mv*To;
Tf =Plm* Mb*Rw*Ra*Mv*Tk;
if k > 1
%
delete(plhd)
delete(pah);
%
end
daspect([1 1 1])
axis([-8.5 8.5 -8.5 8.5 -8.5 8.5 ])
plhd(1) = plot3(Tt(1,:), Tt(2,:), Tt(3,:),'r','LineWidth',2) ;
plhd(2) = plot3(Tf(1,1:2), Tf(2,1:2), Tf(3,1:2),'b','LineWidth',3.5);
plhd(3) = plot3(Tf(1,6:7), Tf(2,6:7), Tf(3,6:7),'k','LineWidth',3.5);
%
Tm = Mi*Tt;
Tmk = Mi*Tf;
plhd(4) = plot3(Tm(1,:), Tm(2,:), Tm(3,:),'r','LineWidth',2);
%
T1 = Rt*Tt;
Tm1 = Rt*Tm;
T1k = Rt*Tf;
Tm1k = Rt*Tmk;
plhd(5) = plot3(T1(1,:), T1(2,:), T1(3,:),'r','LineWidth',2);
plhd(6) = plot3(T1k(1,1:2), T1k(2,1:2), T1k(3,1:2),'b','LineWidth',3.5);
plhd(7) = plot3(T1k(1,6:7), T1k(2,6:7), T1k(3,6:7),'k','LineWidth',3.5);
plhd(8) = plot3(Tm1(1,:), Tm1(2,:), Tm1(3,:),'r','LineWidth',2);
%
T2 = Rt*Rt*Tt;
Tm2 = Rt*Rt*Tm;
T2k = Rt* Rt*Tf;
Tm2k = Rt*Rt*Tmk;
plhd(9) = plot3(T2(1,:), T2(2,:), T2(3,:),'r','LineWidth',2);
plhd(10) = plot3(T2k(1,1:2), T2k(2,1:2), T2k(3,1:2),'b','LineWidth',3.5);
plhd(11) = plot3(T2k(1,6:7), T2k(2,6:7), T2k(3,6:7),'k','LineWidth',3.5);
plhd(12) = plot3(Tm2(1,:), Tm2(2,:), Tm2(3,:),'r','LineWidth',2);
%
wp = 0.6; co1 = [1 wp wp] ; co2 = [wp 1 wp];
tra = 0.75; co3 = [1 1 wp] ; co4 = [wp wp 1];
pah(1) = patch(Tt(1,sind1), Tt(2,sind1), Tt(3,sind1),co1,'FaceAlpha',tra);
pah(2) = patch(Tt(1,sind2), Tt(2,sind2), Tt(3,sind2),co2,'FaceAlpha',tra);
pah(3) = patch(Tt(1,sind3), Tt(2,sind3), Tt(3,sind3),co3,'FaceAlpha',tra);
pah(4) = patch(Tt(1,sind4), Tt(2,sind4), Tt(3,sind4),co4,'FaceAlpha',tra);
pah(5) = patch(Tm(1,sind1), Tm(2,sind1), Tm(3,sind1),co1,'FaceAlpha',tra);
pah(6) = patch(Tm(1,sind2), Tm(2,sind2), Tm(3,sind2),co2,'FaceAlpha',tra);
pah(7) = patch(Tm(1,sind3), Tm(2,sind3), Tm(3,sind3),co3,'FaceAlpha',tra);
pah(8) = patch(Tm(1,sind4), Tm(2,sind4), Tm(3,sind4),co4,'FaceAlpha',tra);
pah(9) = patch(T2(1,sind1), T2(2,sind1), T2(3,sind1),co1,'FaceAlpha',tra);
pah(10) = patch(T2(1,sind2), T2(2,sind2), T2(3,sind2),co2,'FaceAlpha',tra);
pah(11) = patch(T2(1,sind3), T2(2,sind3), T2(3,sind3),co3,'FaceAlpha',tra);
pah(12) = patch(T2(1,sind4), T2(2,sind4), T2(3,sind4),co4,'FaceAlpha',tra);
pah(13) = patch(T1(1,sind1), T1(2,sind1), T1(3,sind1),co1,'FaceAlpha',tra);
pah(14) = patch(T1(1,sind2), T1(2,sind2), T1(3,sind2),co2,'FaceAlpha',tra);
pah(15) = patch(T1(1,sind3), T1(2,sind3), T1(3,sind3),co3,'FaceAlpha',tra);
pah(16) = patch(T1(1,sind4), T1(2,sind4), T1(3,sind4),co4,'FaceAlpha',tra);
pah(17) = patch(Tm1(1,sind1), Tm1(2,sind1), Tm1(3,sind1),co1,'FaceAlpha',tra);
pah(18) = patch(Tm1(1,sind2), Tm1(2,sind2), Tm1(3,sind2),co2,'FaceAlpha',tra);
pah(19) = patch(Tm1(1,sind3), Tm1(2,sind3), Tm1(3,sind3),co3,'FaceAlpha',tra);
pah(20) = patch(Tm1(1,sind4), Tm1(2,sind4), Tm1(3,sind4),co4,'FaceAlpha',tra);
pah(21) = patch(Tm2(1,sind1), Tm2(2,sind1), Tm2(3,sind1),co1,'FaceAlpha',tra);
pah(22) = patch(Tm2(1,sind2), Tm2(2,sind2), Tm2(3,sind2),co2,'FaceAlpha',tra);
pah(23) = patch(Tm2(1,sind3), Tm2(2,sind3), Tm2(3,sind3),co3,'FaceAlpha',tra);
pah(24) = patch(Tm2(1,sind4), Tm2(2,sind4), Tm2(3,sind4),co4,'FaceAlpha',tra);
pause(0.1)
if k < 4
pause(0.08)
end
if ( k > 175 ) & (k < 187)
pause(0.02)
end
if k > 356
pause(0.08)
end
end
pause(0.8)