Patterns made with dragon curve​
​By Sándor Kabai
Dragon curve is shown here as constructed with the unfolding method.
See: https://demonstrations.wolfram.com/UnfoldingADragonCurve/​
Here the stages are shown separately, and it is possible to replace the sphere with other figures to create various patterns. A spiral line is obtained when the points of rotations are connected.
In[]:=
v0={1/3,0,0};​​v1={2/3,0,0};​​v2={1,1/3,0};​​e1={0,0,0};​​e2={1,0,0};​​e3={1,1,0};​​e5={0,2,0};​​e7={-2,2,0};​​e9={-4,0,0};​​e11={-4,-4,0};​​e13={0,-8,0};​​e15={8,-8,0};​​e17={16,0,0};​​e19={16,16,0};​​e21={0,32,0};​​e23={-32,32,0};​​e25={-64,0,0};
In[]:=
spir = Line[{e1,e3,e5,e7,e9,e11,e13,e15,e17,e19,e21,e23,e25}];
Graphics3D[spir]
Out[]=
​​int=Line[{{0.1,-0.6,0},{0,-0.5,0},{0.5,0.5,0}}];​​sp=Sphere[{0.5,0.5,0},0.25];​​(*Herespcanbereplacedwithsp=int,orotherobjecttocreatevariopuspatterns*)​​v0={1/3,0,0};​​v1={2/3,0,0};​​v2={1,1/3,0};​​s0=Line[{v0,v1}];​​s1=Translate[Rotate[Translate[{s0},{0,0,0}],Pi/2,{0,0,1}],{1,0,0}];​​join1=Line[{v1,v2}];​​s2={s0,s1,join1,sp};​​s3=Translate[Rotate[Translate[s2,{-1,-1,0}],-Pi/2,{0,0,1}],{1,1,0}];​​join2=Line[{{1,2/3,0},{2/3,1,0}}];​​s4={s3,s2,join2};​​s5=Translate[Rotate[Translate[s4,{0,-2,0}],-Pi/2,{0,0,1}],{0,2,0}];​​join3=Line[{{0,1+2/3,0},{-1/3,2,0}}];​​s6={s5,s4,join3};​​​​s7=Translate[Rotate[Translate[s6,{2,-2,0}],-Pi/2,{0,0,1}],{-2,2,0}];​​join4=Line[{{-2,1+2/3,0},{-2-1/3,2,0}}];​​s8={s7,s6,join4};​​s9=Translate[Rotate[Translate[s8,{4,0,0}],-Pi/2,{0,0,1}],{-4,0,0}];​​join5=Line[{{-4,-1/3,0},{-4-1/3,0,0}}];​​s10={s9,s8,join5};​​s11=Translate[Rotate[Translate[s10,{4,4,0}],-Pi/2,{0,0,1}],{-4,-4,0}];​​join6=Line[{{-4,-4-1/3,0},{-4-1/3,-4,0}}];​​s12={s11,s10,join6};​​s13=Translate[Rotate[Translate[s12,{0,8,0}],-Pi/2,{0,0,1}],{0,-8,0}];​​join7=Line[{{0,-8-1/3,0},{-1/3,-8,0}}];​​s14={s13,s12,join7};​​s15=Translate[Rotate[Translate[s14,{-8,8,0}],-Pi/2,{0,0,1}],{8,-8,0}];​​join8=Line[{{8,-8-1/3,0},{8-1/3,-8,0}}];​​s16={s15,s14,join8};​​s17=Translate[Rotate[Translate[s16,{-16,0,0}],-Pi/2,{0,0,1}],{16,0,0}];​​join9=Line[{{16,-1/3,0},{16-1/3,0,0}}];​​s18={s17,s16,join9};​​s19=Translate[Rotate[Translate[s18,{-16,-16,0}],-Pi/2,{0,0,1}],{16,16,0}];​​join10=Line[{{16,16-1/3,0},{16-1/3,16,0}}];​​s20={s19,s18,join10};​​s21=Translate[Rotate[Translate[s20,{0,-32,0}],-Pi/2,{0,0,1}],{0,32,0}];​​s22={s21,s20};​​​​s23=Translate[Rotate[Translate[s22,{32,-32,0}],-Pi/2,{0,0,1}],{-32,32,0}];​​s24={s23,s22};​​s25=Translate[Rotate[Translate[s24,{64,0,0}],-Pi/2,{0,0,1}],{-64,0,0}];​​s26={s24,s25};​​s27=Translate[Rotate[Translate[s26,{64,64,0}],-Pi/2,{0,0,1}],{-64,-64,0}];​​​​Graphics3D[{sp,s20},ViewPoint{0,0,10},BoxedFalse,ImageSize400]
Out[]=
In[]:=
Row[Graphics3D[#,BoxedFalse,ImageSize100,ViewPoint{0,0,10}]&/@{s2,s4,s6,s8,s10}]
Out[]=
In[]:=
Row[Graphics3D[#,BoxedFalse,ImageSize120,ViewPoint{0,0,10}]&/@{s14,s16,s18,s20}]
Out[]=
In[]:=
Row[Graphics3D[#,BoxedFalse,ImageSize240,ViewPoint{0,0,10}]&/@{s24,s26}]
Out[]=