% Ipotrocoidi ed ipocicloidi

% Date base e rulletta, si disegnano ipocicloidi ed ipotrocoidi

n = 13; m = 7; R = 1; theta0 = 0; xi = 1.5; 

r = R/(m/n+1);

N = 1000; 
fi = linspace(0,2*pi*n,N);
theta = theta0-m/n*fi;

xp = (R-r)*cos(fi) + xi*r*cos(theta);
yp = (R-r)*sin(fi) + xi*r*sin(theta);

plot(xp,yp)

pause

% Disegno di base e rulletta
M = 50;
T = linspace(0,2*pi,M);
X = cos(T); 
Y = sin(T);
for k=1:N
    ox = (R-r)*cos(fi(k));
    oy = (R-r)*sin(fi(k));
    rx = r*cos(theta(k));
    ry = r*sin(theta(k));
    x = ox+r*cos(T);
    y = oy+r*sin(T);
    ux = [0,ox,xp(k)];
    uy = [0,oy,yp(k)];
    clf
    hold on
    patch(x,y,'g')
    plot(X,Y,x,y,ux,uy,'-o',xp(1:k),yp(1:k))
    drawnow
end

    