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)