script3

run script2 first

t = 0.0025;
fn = 'output2.gif';

for nangle = 0:85

    ang(1) = -nangle;
    R = rotx(ang(1),'deg');
    tf = projective2d(inv(KK)*R*KK);

    [x, y] = transformPointsForward(tf,pts(:,1),pts(:,2));
    pts2 = [x y];

    kp(1,:) = pts2(1,:) - pts2(2,:);
    kp(2,:) = pts2(3,:) - pts2(4,:);
    for k=1:2
        kp(k,:) = kp(k,:)/norm(kp(k,:));
    end
    s = det(kp(1:2,:));
    s = asin(s)*180/pi;
    str = sprintf('angle %g deg divergence %g deg',ang(1),s);
    disp(str);

    %

    ymax = max(pts2(:,2));
    xrng = [min(pts2(:,1))-2000 max(pts2(:,1))+2000];
    diff = xrng(2)-xrng(1);
    yrng = [ymax-diff ymax];

    myref = imref2d([800 800],xrng,yrng);
    [img, ref] = imwarp(rgb,tf,'OutputView',myref,'FillValues',[255 255 200]);
    imshow(img);
    title(str);

    frame = getframe();
    im = frame2im(frame);
    [A, map] = rgb2ind(im,256);
    if nangle==0
        imwrite(A,map,fn,'gif','LoopCount',Inf,'DelayTime',t);
    else
        imwrite(A,map,fn,'gif','WriteMode','append','DelayTime',t);
    end
end