function [T] = tree(H, W, n, x0)
   ytrunk = linspace(0, H, n+2);
   T = zeros(n+n+1, 4);
   for i=2:n+1
     T(i-1, :) = [x0-W/2,ytrunk(i), x0+W/2, ytrunk(i)];
   endfor
   for i=1:n+1
     T(n+i, :) = [x0, ytrunk(i), x0, ytrunk(i+1)];
   endfor
endfunction
    
function plot_tree(T, color, w) 
  n = rows(T);
  for i=1:n
    X = T(i, [1,3]);
    Y = T(i, [2,4]);
    h = line(X,Y);
    set(h, "color", color)
    set(h, "linewidth", w)
  end
end

function TN = bend_tree(radius, T) 
  x0 = T(end, 1);
  TN = zeros(size(T));
  R = radius;
  for i=1:rows(T)
     xs = T(i,1);
     ys = T(i,2);
     xn = (R + xs - x0) * cos(ys/R) + x0-R;
     yn = (R + xs - x0) * sin(ys/R);
     xs1= T(i,3);
     ys1= T(i,4);
     xn1= (R + xs1 - x0) * cos(ys1/R)+x0-R;
     yn1= (R + xs1 - x0) * sin(ys1/R);
     TN(i,:) = [xn,yn,xn1,yn1];
  end
end

T = tree(30, 10, 16, 0)
i=0;
Rc = [100:(-2):10, 10:2:100]
for R=Rc
  clf; 
  i = i+1;
  axis([-35,15,-5,45],"equal")
  TN = bend_tree(R, T);
  plot_tree(T, "red", 2)
  plot_tree(TN, "blue", 2)
  s = sprintf("tree%02d.png", i);
  print(s, "-dpng","-S300,300");
  disp(s);
end
disp("Finished")
pause()   
