Twist-Hinged Dissection of Hexagram to Two Hexagons

p=Table[RotationTransform[(i-1)Pi/3,{0,0,1},{0,0,0}][{0,1,0}],{i,1,6}]//N;
q=Table[RotationTransform[(i-1)Pi/3+Pi/6,{0,0,1},{0,0,0}][{0,1/Sqrt[3.],0}],{i,1,6}]//N;
intersection2lines[r1_,e1_,r2_,e2_]:=First[(r1+t e1)/.Solve[r1+t e1==r2+u e2,{t,u}]];
s1=(p[[1]]+q[[6]])/2;
t1=intersection2lines[s1,{0,1,0},{0,0,0},p[[1]]-q[[1]]];
v1=intersection2lines[t1,{1,0,0},{0,0,0},p[[1]]-q[[6]]];
axA=Table[RotationTransform[(i-1)Pi,{0,0,1},{0,0,0}][(t1+s1)/2],{i,1,2}]//N;
axB=Table[RotationTransform[(i-1)Pi,{0,0,1},{0,0,0}][(t1+v1)/2],{i,1,2}]//N;
pent=Table[Rotate[{Red,Polygon[{p[[1]],q[[1]],v1,t1,s1}]},(i-1)Pi,{0,0,1},{0,0,0}],{i,1,2}];
hex=Table[Rotate[{Blue,Polygon[{q[[1]],p[[2]],q[[2]],{0,0,0},t1,v1}]},(i-1)Pi,{0,0,1},{0,0,0}],{i,1,2}];
hexB=Table[Rotate[{Magenta,Polygon[{{0,0,0},q[[5]],p[[6]],q[[6]],s1,t1}]},(i-1)Pi,{0,0,1},{0,0,0}],{i,1,2}];

Manipulate[Graphics3D[{Table[{pent[[i]],Rotate[hex[[i]],Pi r,{0,1,0},axB[[i]]],Rotate[hexB[[i]],Pi r,{1,0,0},axA[[i]]]},{i,1,2}],If[sp,{Blue,Table[Text[i,p[[i]]],{i,1,6}],Red,Table[Text[i,q[[i]]],{i,1,6}],Black,Text["s1",s1],Text["t1",t1],Text["v1",v1],Point[axA],Point[axB]},{}]},ViewPoint->{0,0.3,10},ViewVertical->{0,1,0},Boxed->False,PlotRange->1.,SphericalRegion->True,ImageSize->{480,400}],{{r,0,"twist"},0,1},{{sp,False,"show points"},{True,False}},SaveDefinitions->True]

This Demonstration shows Frederickson's twist-hinged dissection of a hexagram to two hexagons.

Reference

[1] G. N. Frederickson,  Hinged Dissections: Swinging & Twisting, New York: Cambridge University Press, 2002 p. 233.

Contributed by: Izidor Hafner