WOLFRAM NOTEBOOK

Configuration space for Degree 6 Miura-ori vertex

Copy right: Bin Liu, Jesse L. Silverberg, Arthur A. Evans, Christian D. Santangelo, Robert J. Lang, Thomas C. Hull, and Itai Cohen

This code generates the configuration space of a degree 6 general Miura - ori vertex (i.e., a general Miura - ori vertex, with one parallelogram angle α and the other parallelogram angle β, but with virtual creases added for facet bending).

Vertex geometry

General vector operators.
RotX(Y/Z)[.] are the rotation operators. Mag [v] computes the magnitude of “v”, while Ang[u, v] computes the angle between “u” and “v”.

Necessary functions for linear vector operations

RotY[y_]:={{Cos[y],0,-Sin[y]},{0,1,0},{Sin[y],0,Cos[y]}}RotX[x_]:={{1,0,0},{0,Cos[x],-Sin[x]},{0,Sin[x],Cos[x]}}RotZ[z_]:={{Cos[z],-Sin[z],0},{Sin[z],Cos[z],0},{0,0,1}}Mag[v_]:=Sqrt[v.v]Ang[u_,v_]:=ArcCos[(u.v)/(Mag[u]*Mag[v])]V1={1,0,0};V2[a_]:={Cos[a],Sin[a],0};V3[a_,b_]:={Cos[a+b],Sin[a+b],0};V4[a_,b_,c_,e_:0]:={Cos[a+b+(π-a-c)+e],Sin[a+b+(π-a-c)+e],0};V5[b_,e_:0]:={Cos[π+b+e],Sin[π+b+e],0};V6[b_,c_,d_,e_:0]:={Cos[π+b+c+d+e],Sin[π+b+c+d+e],0};

Vertex geometry as defined by angles a, b, c, d, e

First let' s draw the vertex generally. The mountain creases are in red. The valley creases are in blue. The virtual creases are in dash lines. Here is the geometry by default.
a=π/3;b=π/3;c=π/3;d=0;e=0;
Manipulate[Graphics[{Red,Line[{{0,0},Drop[V1,-1]}],Blue,Line[{{0,0},Drop[V2[a],-1]}],Red,Line[{{0,0},Drop[V3[a,b],-1]}],Line[{{0,0},Drop[V5[b,e],-1]}],Black,Text["V1",Drop[V1,-1]],Text["V2",Drop[V2[a],-1]],Text["V3",Drop[V3[a,b],-1]],Text["V4",Drop[V4[a,b,c,e],-1]],Text["V5",Drop[V5[b,e],-1]],Text["V6",Drop[V6[b,c,d,e],-1]],Black,Dashed,Line[{{0,0},Drop[V4[a,b,c,e],-1]}],Line[{{0,0},Drop[V6[b,c,d,e],-1]}]}],{{a,π/3,"a"},0,π/2,Appearance"Open"},{{b,π/3,"b"},0,π/2,Appearance"Open"},{{c,π/3,"c"},0,π/2,Appearance"Open"},{{d,0,"d"},-π/4,π/4,Appearance"Open"},{{e,0,"e"},-π/4,π/4,Appearance"Open"},LocalizeVariablesFalse,ControlPlacementLeft]
a
a
b
b
c
c
d
d
e
e

Configuration-space analysis

Configuration spaces of an mathematically ideal degree-6 vertices

Lets have an example configuration space of the above vertex geometry without considering the any self-interception or pop-through error. The approach is the following: Because the sheets are not extensible, we have the distance between two neighboring vertices always non-larger the unfolded case. Regarding vertices V1 and V3, this condition can be expressed as ||V3-V1||
2-2Cos[a]Cos[b]+2Sin[a]Sin[b]
. The 3D configuration space for the crease geometry above can thus be obtained by satisfying this criterion, which can be represented by RegionPlot3D. [Note: Update the above geometry first using the interactive interface for desired crease pattern before updating the configuration space.]
RegionPlot3DMag[RotZ[π+b+c+d].RotX[-t6].RotZ[-π-b-c-d].RotZ[-(π-b)].RotX[-t5].RotZ[π-b].RotZ[π+b-c].RotX[-t4].RotZ[-π-b+c].V3[a,b]-V1]
2-2Cos[a]Cos[b]+2Sin[a]Sin[b]
,{t6,-1.5,1.5},{t5,-Pi,0},{t4,-1.5,1.5},AxesLabel{Text[Style["
t
6
"]],Text[Style["
t
5
"]],Text[Style["
t
4
"]]},LabelStyle{Large,Black}

Exact configuration spaces (without self-interceptions or misfolds)

Now let’s consider other constraints for a more realistic vertex:
Excluding self-interception in the accessible configurations (through the condition test function “GCIntersectMiuraQ”)
mapping=CoordinateTransformData[{"Cartesian""Spherical",3},"Mapping"];GCCross[v1_,v2_]:=Module[{pcrss},pcrss=Cross[v1,v2];pcrss=If[Norm[pcrss]>0,pcrss/Norm[pcrss],v1]];GCIntersection[p1_,p2_,p3_,p4_]:=Module[{v1,v2,pcrss},v1=Cross[p1,p2];v2=Cross[p3,p4];pcrss=GCCross[v1,v2]];BWLinesQ[p1_,p2_,p3_]:=Cross[p1,p3].Cross[p2,p3]<-1.`*^-8;GCIntersectionQ[p1_,p2_,p3_,p4_]:=Module[{vv,vang,lp,pcrss},pcrss=GCIntersection[p1,p2,p3,p4];(BWLinesQ[p1,p2,pcrss]&&BWLinesQ[p3,p4,pcrss])||(BWLinesQ[p1,p2,-pcrss]&&BWLinesQ[p3,p4,-pcrss])];GCIntersectMiuraQ[p_]:=GCIntersectionQ[p[[1]],p[[2]],p[[3]],p[[4]]]||GCIntersectionQ[p[[1]],p[[2]],p[[4]],p[[5]]]||GCIntersectionQ[p[[2]],p[[3]],p[[4]],p[[5]]]||GCIntersectionQ[p[[2]],p[[3]],p[[5]],p[[6]]]||GCIntersectionQ[p[[2]],p[[3]],p[[6]],p[[1]]]||GCIntersectionQ[p[[3]],p[[4]],p[[5]],p[[6]]]||GCIntersectionQ[p[[3]],p[[4]],p[[6]],p[[1]]]||GCIntersectionQ[p[[4]],p[[5]],p[[6]],p[[1]]];RealQ[x_]:=Element[x,Reals]===True;RealQN[x_]:=Abs[Im[x]]<1`*^-15;
Excluding the pop-through misfolds in the configurations (through the condition test function “PopthroughQ”)
PopthroughQ[v1_,v2_,v3_]:=Cross[Cross[v1,v2],Cross[v2,v3]].v2>0;
Here, we generate the configuration space in 3D spaces composed by folding angles t4, t5, and t6. Increasing the resolution by increasing the number of “Plot points.”
Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.