def twisted expr t of p =
  rotated angle direction arctime t of p of p 
            shifted point arctime t of p of p
enddef;
vardef rope expr c = 
  save s, w, hemp, n, a, b, A; 
  color hemp; hemp = 1/256 (192, 149, 82);
  w = -1; n = -1; A = arclength c; s = A/floor(A/2);
  path a[]; 
  for t=0 step s until A + 1: a[incr n] = 
    (0,+w) twisted t-3/2s of c .. (0,+w) twisted t-1/2s of c ..
    (0,-w) twisted t+1/2s of c .. (0,-w) twisted t+3/2s of c;
  endfor
  image(for i=1 upto n:
    path b; b = buildcycle(a[i-1], reverse a[i]);
    fill b withcolor 1/2[white, hemp]; 
    draw b withpen pencircle scaled 1/8;
  endfor)
enddef;

