ABSTRACT (original article): The use of origami in engineering has significantly expanded in recent years, spanning deployable structures across scales, folding robotics, and mechanical metamaterials. However, finding foldable paths can be a formidable task as the kinematics are determined by a nonlinear system of equations, often with several degrees of freedom. In this work, we leverage a Lagrangian approach to derive reduced-order compatibility conditions for rigid-facet origami vertices with reflection and rotational symmetries. Then, using the reduced-order conditions, we derive exact, multi-degree of freedom solutions for degree 6 and degree 8 vertices with prescribed symmetries. The exact kinematic solutions allow us to efficiently investigate the topology of allowable kinematics, including the consideration of a self-contact constraint, and then visually interpret the role of geometric design parameters on these admissible fold paths by monitoring the change in the kinematic topology. We then introduce a procedure to construct lower symmetry kinematic solutions by breaking symmetry of higher order kinematic solutions in a systematic way that preserves compatibility. The multi-degree of freedom solutions discovered here should assist with building intuition of the kinematic feasibility of higher degree origami vertices and also facilitate the development of new algorithmic procedures for origami-engineering design. CITATION (original article): Matthew Grasinger, Andrew Gillman, Philip Buskohl, Lagrangian approach to origami vertex analysis: Kinematics, arXiv:2408.15460. https://doi.org/10.48550/arXiv.2408.15460
Isometric mappings
Isometric mappings
Consider an origami vertex where creases meet. Start at any crease, label it , and then proceed around the vertex in the counterclockwise direction, labeling each subsequent crease etc. Folding a crease in an origami involves the (relative) rotation of its adjacent faces by some angle, often called the “fold angle” and denoted by . As such, proper orthogonal linear transformations, and their associated matrix representations, are powerful tools for modeling the deformed state of an origami [1-7]. To this end, let be the skew symmetric matrix associated with the cross product with .
N
1
2,3,...,
ϕ
A
r
r
Take a product of matrices
MatrixProduct[As_]:=Module[{ret,i},ret=IdentityMatrix[3];For[i=1,i≤Length[As],i++,ret=ret.As[[i]];];ret];
Skew symmetric matrix associated with cross product with r
In[]:=
A[r_]:={{0,-r[[3]],r[[2]]},{r[[3]],0,-r[[1]]},{-r[[2]],r[[1]],0}};
Then a matrix representation of the rotation about a unit vector by angle is given by (θ)exp(θ)(1-cosθ)r⊗r+cosθI+sinθ.
r
θ
Q
r
A
r
A
r
Rotation matrix for rotation of angle θ about the rotation axis r
In[]:=
Q[rvec_,θ_]:=(1-Cos[θ])*rvecrvec+Cos[θ]*IdentityMatrix[3]+Sin[θ]*A[rvec];
Translate a collection of points
transX[points_,c_]:=Module[{x=points},For[i=1,i≤Length[x],i++,x[[i]]=x[[i]]+c;];x];
Rotate a collection of points
rotatePts[X_,QQ_]:=Module[{Y,i},Y={};For[i=1,i≤Length[X],i++,Y=Append[Y,QQ.X[[i]]];];Y];
Generally, we are only interested in deformations of the origami up to full body rigid rotations and translations (of the entire structure). Therefore, we can fix the “frame”, so to speak, relative to full body rotations and translations, as convenient for simplifying derivations and computations. A standard convention is to assume that face 1 is fixed. Let denote the unit vector along crease and oriented such that it is pointing away from the vertex. Then face 2 is mapped into the deformed configuration by (); that is, by rotating face 2 about by . Face 3 is mapped into the deformed configuration by first rotating it relative to crease 2 and then, because it is attached to face 2, by crease 1 as well. Formally, face 3 is mapped by ()(), face 4 by ()()(), etc. For our choices of fold angles to be consistent with the assumption that face 1 is fixed, we require that ()I [1]. This is sometimes called the “compatibility condition” [4,6,7] because it is required for the origami vertex to be able to be folded with the given fold angles and without tearing. (It also goes by the name “loop-closure condition” [1,7,8].) The below functions are used to compute folded deformation maps, and visualize folded origami configurations.
b
i
i
Q
b
1
ϕ
1
b
1
ϕ
1
Q
b
1
ϕ
1
Q
b
2
ϕ
2
Q
b
1
ϕ
1
Q
b
2
ϕ
2
Q
b
3
ϕ
3
N
∏
i1
Q
b
i
ϕ
1
bsSymm[n_]:=Table[{Cos[j*2*π/n],Sin[j*2*π/n],0},{j,0,n-1}];foldMap[bs_,ϕs_,j_]:=If[j1,IdentityMatrix[3],MatrixProduct[Table[Q[bs[[i]],ϕs[[i]]],{i,1,j-1}]]];(*deformationmapbasedonfoldanglesandcreasevectors*)vertexLoopMap[bs_,ϕs_]:=foldMap[bs,ϕs,Length[bs]+1];(*deformationmapallthewayaroundthevertex;equaltoidentityifvertexisfoldedwithouttears*)ϕsSymm[ρIdxs_]:=Module[{ret},ret={ρs[[ρIdxs[[1]]]]+ρs[[ρIdxs[[Length[ρIdxs]]]]],If[Mod[ρIdxs[[1]],2]1,-Abs[2*θ-π],Abs[2*θ-π]]};For[i=2,i≤Length[ρIdxs],i++,AppendTo[ret,ρs[[ρIdxs[[i]]]]+ρs[[ρIdxs[[i-1]]]]];AppendTo[ret,If[Mod[ρIdxs[[i]],2]1,-Abs[2*θ-π],Abs[2*θ-π]]];];ret];ϕsSymmN[ρIdxs_,θv_]:=N[(ϕsSymm[ρIdxs+If[θv<π/2,Table[0,{Length[ρIdxs]}],Table[2,{Length[ρIdxs]}]]])/.{θθv,n2*Length[ρIdxs]}];CMatrix[bs_,ϕs_]:=Transpose[Table[foldMap[bs,ϕs,j].bs[[j]],{j,1,Length[bs]}]];(*creasesinthedeformedconfiguration*)OrigamiVertex[bs_,ϕs_,Q_:IdentityMatrix[3]]:=Module[{cs},(*visualizeadeformedvertex*)cs=Transpose[CMatrix[bs,ϕs]];Catenate[{{Triangle[rotatePts[{{0,0,0},cs[[Length[cs]]],cs[[1]]},Q]]},Table[Triangle[rotatePts[{{0,0,0},cs[[i]],cs[[i-1]]},Q]],{i,2,Length[cs]}]}]];OrigamiVertexRefl[bs_,ϕs_]:=Module[{cs,i,j},(*visualizeadeformedvertexwithframefixedrelativetoaplaneofrefectionsymmetry(normalto{0,1,0})*)cs=Table[(Q[bs[[1]],ϕs[[1]]/2]).(MatrixProduct[Table[Q[bs[[i]],ϕs[[i]]],{i,2,j}]]).bs[[j]],{j,1,Length[bs]}];Catenate[{{Triangle[{{0,0,0},cs[[Length[cs]]],cs[[1]]}]},Table[Triangle[{{0,0,0},cs[[i]],cs[[i-1]]}],{i,2,Length[cs]}]}]];OrigamiVertexReflRot[bs_,θv_,ϕs_]:=Module[{cs,i,j},(*visualizeadeformedvertexwithframefixedrelativetorotationalsymmetriesabouttheaxis{0,0,1}*)cs=Table[(Q[{0,1,0},θv]).(Q[bs[[1]],ϕs[[1]]/2]).(MatrixProduct[Table[Q[bs[[i]],ϕs[[i]]],{i,2,j}]]).bs[[j]],{j,1,Length[bs]}];Catenate[{{Triangle[{{0,0,0},cs[[Length[cs]]],cs[[1]]}]},Table[Triangle[{{0,0,0},cs[[i]],cs[[i-1]]}],{i,2,Length[cs]}]}]];
Six fold, D2
Six fold, D2
In this section, we consider an origami vertex with 6 creases which has a reflection symmetry about (0,1,0). The angles between pairs of adjacent creases in the flat state are called sector angles. The sector angle between creases and is denoted by . The degree 6 vertices considered in this section are parameterized by such that ,π-2. The crease unit vectors and an example vertex (where π/6) are given below.
e
2
i
i+1
α
i
α
1
α
3
α
4
α
6
α
1
α
2
α
4
α
1
α
1
Crease unit vectors of a degree 6 vertex in the undeformed configuration
In[]:=
x6s=Simplify[{{1,0,0},{Cos[α],Sin[α],0},{Cos[π-α],Sin[π-α],0},{-1,0,0},{Cos[π-α],-Sin[π-α],0},{Cos[α],-Sin[α],0}}]
Out[]=
{{1,0,0},{Cos[α],Sin[α],0},{-Cos[α],Sin[α],0},{-1,0,0},{-Cos[α],-Sin[α],0},{Cos[α],-Sin[α],0}}
Example of flat origami where α = π / 6
Graphics3D[OrigamiVertex[x6s/.{απ/6},Table[0,{6}]],BoxedFalse]
Out[]=
We are interested in the ways in which these origami structures can fold; however, solving the compatibility condition (i.e. loop-closure condition) is difficult, in general. Here we aim to leverage the symmetry of the flat configuration in order to formulate and solve reduced order compatibility conditions. The principal innovation here is to recognize that the choice of “frame” where face 1 is fixed was arbitrary. Instead, consider rotating face 1 via (/2) and face 6 via (-/2). Then crease 1 has fold angle as desired, and, importantly, face 6 is a reflection of face 1 about the plane normal to . Proceeding in this way, face 2 is mapped via (/2)() and face 3 via (/2)()(). Now, if crease 4, which is adjacent to face 3, is mapped into the plane normal to , then we can obtain a folded structure which is both compatible and has the same symmetry as the flat state by simply assigning the remaining fold angles as and . Thus, represents a reduced-order compatibility condition for the degree 6 vertices of interest [7]. This kind of reduction can be done, in general, for origami vertices with a reflection symmetry where a pair of collinear creases lie within the plane of symmetry. In general, the number of unknowns is reduced from to [7], and one only needs to solve a single nonlinear equation as opposed to a system of 3 nonlinear equations.
Q
b
1
ϕ
1
Q
b
1
ϕ
1
ϕ
1
e
2
Q
b
1
ϕ
1
Q
b
2
ϕ
2
Q
b
1
ϕ
1
Q
b
2
ϕ
2
Q
b
3
ϕ
3
e
2
ϕ
5
ϕ
3
ϕ
6
ϕ
2
(/2)()()·0
Q
b
1
ϕ
1
Q
b
2
ϕ
2
Q
b
3
ϕ
3
b
3
e
2
N-3
N/2-1
Crease unit vector 4 in the deformed configuration
In[]:=
y64=Simplify[Q[x6s[[1]],ϕ1/2].Q[x6s[[2]],ϕ2].Q[x6s[[3]],ϕ3].x6s[[4]]]
In[]:=
soln6=Simplify[Solve[y64[[2]]==0,ϕ1]]/.{->0}
1
This solution was found in a separate notebook by using FullSimplify[Solve[y64[[2]] == 0, ϕ1]]; the calculation is not repeated here as it is expensive
soln6Simpler=FullSimplifyϕ12ArcTanCos[ϕ3]Sin[α]Sin[ϕ2]+2(Sin[α]+Sin[α])Sin[ϕ2]+Cos[ϕ2]Sin[α]Sin[ϕ3],-Cos[α]Cos[ϕ3]Sin[α](1-Cos[ϕ2]+Sin[α]Sin[α])-2((-1+Cos[ϕ2])Sin[α]+Cos[ϕ2]Sin[α])+Sin[α](-+Sin[ϕ2]Sin[ϕ3]),ϕ12ArcTan-Cos[ϕ3]Sin[α]Sin[ϕ2]-2(Sin[α]+Sin[α])Sin[ϕ2]-Cos[ϕ2]Sin[α]Sin[ϕ3],Cos[α]Cos[ϕ3]Sin[α](1-Cos[ϕ2]+Sin[α]Sin[α])-2((-1+Cos[ϕ2])Sin[α]+Cos[ϕ2]Sin[α])+Sin[α](-+Sin[ϕ2]Sin[ϕ3]),0<=α≤π2&&α∈Reals&&-π≤ϕ2≤π&&ϕ2∈Reals&&-π≤ϕ3≤π&&ϕ3∈Reals
2
Cos[α]
2
Sin
ϕ3
2
2
Cos[α]
2
Sin
ϕ3
2
2
Sin[α]
2
Cos[α]
2
Sin
ϕ3
2
2
Cos[α]
2
Sin
ϕ3
2
2
Sin[α]
Compute the signed volume of a tetrahedron; used for detecting contact between (triangular) faces
Detects if an edge is intersecting a triangle
Testing the intersection function
Recursively converts fold angles to fall in the range [-π, π]
This finds solution to degree 6 vertex that has the least error
This visualizes the folding of degree 6 vertices; α is the first sector angle, ϕ2 is the second fold angle, and ϕ3 is the third fole angle; red - tinted box denotes that self contact was detected
Eight fold, D4 (more symmetry, less DOF)
Eight fold, D4 (more symmetry, less DOF)
Crease vectors in the undeformed configuration for a degree 8 vertex
Crease 3 vector in the deformed configuration
Solve condition for D4 symmetry folding
Simplify solution
The above was simplified further in a separate workbook; the result is copied here instead of recomputed in the interest of time/efficiency (took several hours to simplify to this point)
Another simplified version; all solutions are equivalent, but trying to find the simplest possible expression
Vector along the 2 nd crease in the deformed configuration
Vector normal to face 2
Intermediate calculation for finding the fold angle at crease 3
Fold angle at crease 3
We have multiple forms for the solution; find the 1 with the least error
This finds the fold angles without contact and with the least error, returns NaNs if solution isn’t possible (due to contact)
This finds the fold angles for a given solution index, returns NaNs if solution isn’t possible (due to contact)
Note: When ϕ2 is negative, then solution 1 is the correct solution;
when ϕ2 is positive, then solution 2 is the correct solution.
when ϕ2 is positive, then solution 2 is the correct solution.
This finds fold angles for a given solution index; returns (solution, error, true/false if intersection occurs/does not occur)
This creates array of still images of a folding trajectory in order to later compile into an animation
Tinted - red box around origami denotes self - contact has occurred
Empty tinted - red box denotes that no solution exists for the given parameters
Tinted - red box around origami denotes self - contact has occurred
Empty tinted - red box denotes that no solution exists for the given parameters
Some simple tests
Eight fold vertex, D8
Eight fold vertex, D8
This subsection is for solutions to a degree 8 vertex with D2 symmetry; it has 3 DOFs and is quite complicated.
Eight fold with less symmetry, D4
Eight fold with less symmetry, D4
Note: When ϕ2 is positive, then solution 1 is the correct solution;
when ϕ1 is negative, then solution 2 is the correct solution.
when ϕ1 is negative, then solution 2 is the correct solution.
Six fold, D2 (least amount of symmetry in vertex)
Six fold, D2 (least amount of symmetry in vertex)
References
References
[1] Sarah belcastro and Thomas C Hull. Modelling the folding of paper into three dimensions using affine transformations. Linear Algebra and its applications, 348(1-3):273–282, 2002.
[2] Riccardo Foschi, Thomas C Hull, and Jason S Ku. Explicit kinematic equations for degree-4 rigid origami vertices, euclidean and non-euclidean. Physical Review E, 106(5):055001, 2022.
[3] Johnna Farnham, Thomas C Hull, and Aubrey Rumbolt. Rigid folding equations of degree-6 origami vertices. Proceedings of the Royal Society A, 478(2260):20220051, 2022.
[4] Fan Feng, Xiangxin Dang, Richard D. James, and Paul Plucinsky. The designs and deformations of rigidly and flat-foldable origami. Journal of the Mechanics and Physics of Solids, page 104018, 2020.
[5] Fan Feng, Paul Plucinsky, and Richard D James. Helical miura origami. Physical Review E, 101(3):033002, 2020.
[6] Huan Liu, Paul Plucinsky, Fan Feng, and Richard D James. Origami and materials science. Philosophical Transactions of the Royal Society A, 379(2201):20200113, 2021.
[7] Matthew Grasinger, Andrew Gillman, and Philip Buskohl. Lagrangian approach to origami vertex analysis: Kinematics. arXiv preprint arXiv:2408.15460, 2024.
[8] Hao Zhou, Matthew Grasinger, Philip Buskohl, and Kaushik Bhattacharya. Low energy fold paths in multistable origami structures. International Journal of Solids and Structures 265 (2023): 112125.
[9] Tomas Moller and Ben Trumbore. Fast, minimum storage ray/triangle intersection. In ACM SIGGRAPH 2005 Courses, pages 7–es. 2005.
[10] Matthew Grasinger, Andrew Gillman, and Philip R. Buskohl. Multistability, symmetry and geometric conservation in eightfold waterbomb origami. Proceedings of the Royal Society A 478, no. 2268 (2022): 20220270.
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Lagrangian approach to origami vertex analysis: kinematics
by Matthew Grasinger, Andrew Gillman & Philip Buskohl
Wolfram Community, STAFF PICKS, September 12, 2024
https://community.wolfram.com/groups/-/m/t/3273116
by Matthew Grasinger, Andrew Gillman & Philip Buskohl
Wolfram Community, STAFF PICKS, September 12, 2024
https://community.wolfram.com/groups/-/m/t/3273116