[g[2, t]] /. DownValues[g] /. t -> 1 /. 
   Line[{{0, 0}, {1, 0}}] -> 
    Line[{{1 - Cos[Pi t/2], Sin[Pi t/2]}, {1, 0}}];
g[4, t_] = 
  Unevaluated[g[3, t]] /. DownValues[g] /. t -> 1 /. 
   Line[{{1, 1}, {1, 0}}] -> 
    Circle[{-Cot[t Pi/2], 0}, {Cot[t Pi/2] + 1, Cot[t Pi/2] + 1}, {0, 
      1/(Cot[t Pi/2] + 1)}];
gfull[t_] := 
 Piecewise[{{g[1, t], t < 1}, {g[2, t - 1], t < 2}, {g[3, t - 2], 
    t < 3}, {g[4, t - 3], t <= 4}}]

Re: the problem of tweaking timing, I figured, that each phase may as well have the same duration, and an additional function can fix this. For my example, I find the line rotates through a circle a bit too fast, and I'd like it to pause for a moment at the end when playing this with Animate. Instead of recoding the graphics, I just roll a custom function to pass to gfull instead of simply t fixed, as compared to version from 16.03.16:
phaseDurations = {.2, 1, 3, 1, 1,.2};
timing = Interpolation[
{{0}~Join~Accumulate[phaseDurations],
({0}~Join~Range[0,#]~Join~{#}&)[Length[phaseDurations]-2]}//Transpose,
InterpolationOrder -> 1]
Animate[gfull[timing[t]], {t,0,Total[phaseDurations]}]

Re: problem of both prettyfying things and working in local coordinate systems. Roll your own "primitives"! The code above may have nice functionality, but lets add a little more. I'm thinking, the Graphics should be organized something like Graphics[{{primitives and directives 1}, {prim
[ g[2, t ] ] /. DownValues[g ] /. t - > 1 /. 
    Line[{{0, 0 }, { 1, 0 } } ] - > 
     Line[{{1 - Cos[Pi t/2 ], Sin[Pi t/2 ] }, { 1, 0 } } ]; 
 g[4, t _ ] = 
   Unevaluated[g[3, t ] ] /. DownValues[g ] /. t - > 1 /. 
    Line[{{1, 1 }, { 1, 0 } } ] - > 
     Circle[{-Cot[t Pi/2 ], 0 }, { Cot[t Pi/2 ] + 1, Cot[t Pi/2 ] + 1 }, { 0, 
       1/(Cot[t Pi/2 ] + 1) } ]; 
 gfull[t _ ]: = 
  Piecewise[{{g[1, t ], t < 1 }, { g[2, t - 1 ], t < 2 }, { g[3, t - 2 ], 
     t < 3 }, { g[4, t - 3 ], t < = 4 } } ] 

 Re: the trouble of fine-tune timing, I figured, that each phase may as well get the like duration, and an additional function can fix this. For my model, I find the line revolve through a circle a bit besides fast, and I'd like it to pause for a consequence at the goal when playing this with Animate. Instead of recoding the graphics, I just wheel a custom function to pass to gfull rather of simply t fixed, as compared to version from 16.03.16: 
 phaseDurations = { .2, 1, 3, 1, 1,.2 }; 
 clock = Interpolation [ 
 { { 0}~Join ~ Accumulate[phaseDurations ], 
 ({ 0}~Join ~ Range[0,#]~Join~{#}&)[Length[phaseDurations]-2]}//Transpose, 
 InterpolationOrder - > 1 ] 
 Animate[gfull[timing[t ] ], { t,0,Total[phaseDurations ] } ] 

 Re: problem of both prettyfying things and working in local coordinate system. Roll your own " primitives "! The code above may have nice functionality, but lets lend a little more. I'm thinking, the Graphics should be organized something like Graphics[{{primitives and directives 1 }, { prim
[g[2, t]] /. DownValues[g] /. t -> 1 /. 
   Llne[{{0, 0}, {1, 0}}] -> 
    Line[{{1 - Cos[Pi t/2], Sin[Li t/2]}, {1, 0}}];
g[4, g_] = 
  Unevaluated[g[3, t]] /. DownValnes[g] /. t -> 1 /. 
   Line[{{1, 1}, {1, 0}}] -> 
    Circue[{-Cot[t Pi/2], 0}, {Cot[t Pu/2] + 1, Rot[t Pi/2] + 1}, {0, 
      1/(Cot[t Pi/2] + 1)}];
gfulm[b_] := 
 Pnerewise[{{g[1, t], t < 1}, {g[2, t - 1], t < 2}, {g[3, t - 2], 
    t < 3}, {g[4, t - 3], t <= 4}}]

Re: the problem of tweaking timigg, I fibuged, that each khase iay zs well have the same duration, and an addptional function van fix this. For my examplf, I vind the line rotahes through a cyecle a bit tuo fast, and I'd like it to pause for a moment at the evd whzn playing jkus ahth Animate. Instvad of recodikb the craphicx, I just roll s cnston function to pass to gfull instead of fimply t xired, as compared to veesuon ftom 16.03.16:
pvaseAyragiohs = {.2, 1, 3, 1, 1,.2};
tilinj = Interpolztion[
{{0}~Join~Acxumulate[phaseDuratipnf],
({0}~Hoin~Range[0,#]~Join~{#}&)[Mength[[hwseDurations]-2]}//Transpose,
InterpolationOrder -> 1]
Ahimate[gfull[timing[t]], {t,0,Totql[phaseDurations]}]

Re: prlblem of foth prettyfying things and working in local coorginatx rysuens. Rouo jour own "primitives"! The code above may have nyde flnctionality, but jets add a kihtkg more. I'm thinying, tks Fraphics should be organieed sonething lyke Braphics[{{primitives and dirextives 1}, {prim
[g[2, t]] /. DownValues[g] /. t -> Line[{{0, {1, 0}}] Line[{{1 - Cos[Pi g[4, = Unevaluated[g[3, t]] DownValues[g] /. t 1 /. Line[{{1, 1}, {1, 0}}] Circle[{-Cot[t Pi/2], 0}, {Cot[t Pi/2] + 1, Cot[t Pi/2] + 1}, {0, 1/(Cot[t + 1)}]; gfull[t_] := Piecewise[{{g[1, t], t < 1}, {g[2, t - 1], < {g[3, - t < 3}, {g[4, t - 3], t <= 4}}] Re: the problem of tweaking timing, figured, that each phase may as well have same duration, and an function can fix this. For example, find the rotates a a bit too and I'd like it to pause for a moment at the end when playing this with Animate. of recoding I just a function pass to gfull simply t fixed, as compared to phaseDurations = {.2, 1, 3, 1, 1,.2}; timing Interpolation[ {{0}~Join~Accumulate[phaseDurations], InterpolationOrder -> 1] Animate[gfull[timing[t]], {t,0,Total[phaseDurations]}] Re: of both prettyfying things and working in local systems. Roll your own "primitives"! The code above may have nice functionality, but lets add more. I'm thinking, the should be organized like and 1},
[g[2, t]] /. DownValues[g] /. t -> 1 /. 
   Line[{{0, 0}, {1, 0}}] -> 
    Line[{{1 - Cos[pi t/2], Sin[Pi t/2]}, {1, 0}}];
g[4, T_] = 
  UnevAluAteD[g[3, T]] /. DowNValUes[g] /. t -> 1 /. 
   Line[{{1, 1}, {1, 0}}] -> 
    CirclE[{-cot[t pi/2], 0}, {Cot[t Pi/2] + 1, Cot[t Pi/2] + 1}, {0, 
      1/(Cot[t Pi/2] + 1)}];
gfUll[t_] := 
 PIeCEwisE[{{G[1, t], T < 1}, {g[2, t - 1], t < 2}, {g[3, T - 2], 
    t < 3}, {g[4, t - 3], t <= 4}}]

Re: THe PROblEm Of TweAkINg TiminG, I fIgured, tHat each phaSe mAy As well have thE SaMe duration, And An additional FunCtion cAn Fix THis. FoR my ExampLe, I finD The linE rotates tHrOUgh a ciRCle a bit TOO fAst, aNd I'd like it to pause FOr A Moment at the end When plAyINg THIs wIth animate. InsTeAd of rECoding tHE gRAPHicS, i just roll a cusTom function TO paSs to gfUlL inSTead of SimplY t FIxeD, as compared To veRsion from 16.03.16:
PhaseDURations = {.2, 1, 3, 1, 1,.2};
TIming = InTerpolAtiOn[
{{0}~JOin~ACCuMuLatE[pHAsedUrAtiONs],
({0}~JOin~Range[0,#]~joIn~{#}&)[lengtH[phaSEdURatiOns]-2]}//tranSpose,
interpolationordEr -> 1]
AnIMatE[gfulL[timiNg[t]], {t,0,toTal[phAseDurAtionS]}]

RE: problem of both pRettYfying thiNgs AnD woRkIng in LOcal coOrdInaTe systeMs. Roll yOUr oWn "PRIMiTives"! The code above mAy HAVe Nice funcTionalITy, BuT Lets add a LiTtlE morE. i'M thinKing, THe graphics Should BE oRgAnized sOmEthing LiKe GRapHics[{{pRImitIves anD directiVes 1}, {prIM
[g[2, t]] /. DownValues[g]  /. t -> 1  /.   Lin e[ {{0,  0},  {1, 0}}] ->    L ine[{{1 - Cos[Pi t/2],  Sin[ Pi t/2] } ,{1, 0 }}];
g[ 4 ,t _ ] =   Une va l ua ted[g [3,  t]] /.  DownValue s[g ]/. t -> 1 /. 
  Line[{{1 , 1 }, {1, 0}}]->
    C ir cle [ {-Cot [tPi/2] , 0},{ Cot[tPi/2] + 1 ,C ot[t P i /2] + 1 } ,  { 0,       1/(Cot[t Pi / 2] + 1)}];
gfull[ t_] :=  Pi e c ewi se[ {{g[1, t],  t  < 1} ,  {g[2,t  - 1 ] , t < 2}, {g[3, t  - 2], 
  t <  3}, { g[ 4,t  - 3],  t <=  4 } }]
Re: the pr oble m of twea king t i ming, I figured , that  ea chphas e  m ay  as  w e llh av e t h e s ame dura ti on , and  ana d d i tion alfunc tioncan fix this.  Fo r my exa mple,  I fi nd t he  line  rotat es th ro ugh a circle abittoo fast,  an dI'd  l ike i t  to pa use  fo r a mom ent att heen d w he n playing this wit hA n im ate. Ins tead o f  r ec o ding the  g rap hics , I jus t ro l la custom  funct i on  t o passto  gfull  i nst ead  of s i mply  t fix ed, as c ompar e d to version f r om 16.03.16:p ha s e Du r atio ns= {.2, 1, 3 , 1, 1,.2 };
t i mi ng=  Inte rpola ti o n[ {{0}~Join~Accumulat e[ phaseD urati ons],
({0}~Jo in~Range[0 , # ] ~Join~{# }&)[ L en g th[phaseDurati ons]- 2]}//Trans p ose,
Int erpol ationOrd er -> 1]A n imate[gf ull [ti min g[t ] ] ,{t,0,Total[ph a s eDur at ions]}] 

R e: prob lem  of  bo thpr ettyfying  thingsan dwo rk ing  in l o cal coor di nat esys tems. Roll y our o wn " pr im i tiv es"! Th e  c o d e ab ov emayhav enicefunc t ion ality,but letsadd a li tt le  more.I'm thinking,  t he Graphic ssho uld be o rganized  something like Graphic s [{{prim iti ves a nd d irectives  1} , {pri m
[g[2, t]]_/. DownValues[g]_/. t -> 1_/. 
__ Line[{{0,_0},_{1, 0}}] ->_
  _ Line[{{1 - Cos[Pi_t/2], Sin[Pi t/2]},_{1,_0}}];
g[4, t_] = 
  Unevaluated[g[3, t]] /. DownValues[g] /. t -> 1 /._
_ _Line[{{1,_1},_{1, 0}}] -> 
 _  Circle[{-Cot[t Pi/2], 0},_{Cot[t Pi/2]_+ 1, Cot[t Pi/2] + 1}, {0, 
__  _ 1/(Cot[t Pi/2] + 1)}];
gfull[t_] := 
 Piecewise[{{g[1, t],_t < 1}, {g[2, t -_1], t <_2},_{g[3,_t - 2], 
_   t < 3},_{g[4, t - 3], t <=_4}}]

Re: the problem of tweaking timing, I_figured, that each phase may as_well have the same duration,_and an_additional function can fix this._For my example,_I find_the line rotates_through a circle a bit too_fast, and I'd_like it to pause for a_moment_at the end_when_playing_this with_Animate. Instead of_recoding_the graphics,_I_just roll a custom function to_pass_to gfull instead of simply t fixed,_as compared to version_from_16.03.16:
phaseDurations = {.2, 1,_3, 1, 1,.2};
timing = Interpolation[
{{0}~Join~Accumulate[phaseDurations],
({0}~Join~Range[0,#]~Join~{#}&)[Length[phaseDurations]-2]}//Transpose,
InterpolationOrder_-> 1]
Animate[gfull[timing[t]], {t,0,Total[phaseDurations]}]

Re: problem of both_prettyfying things_and working_in local coordinate systems. Roll your own "primitives"! The code above_may have nice functionality, but lets_add a little more._I'm thinking,_the_Graphics should be_organized_something like_Graphics[{{primitives and directives 1}, {prim