fig1

cam1.pos = [10 2 5];
cam1.target = [0 0 0];
scl = 2;

cam2.pos = [2 10 5];
cam2.target = [0 0 0];

pt = [4 4 3];
[x, y, z] = sphere;
ps = 4;
figure(1);
surf(x/ps+pt(1),y/ps+pt(2),z/ps+pt(3));
daspect([1 1 1]);
view(135,60);

hold on;
cam1 = cam_obj(cam1,scl);
text(cam1.pos(1),cam1.pos(2),cam1.pos(3),'1','FontSize',16);
img1 = cam_plot(cam1,pt,'g');

cam2 = cam_obj(cam2,scl);
text(cam2.pos(1),cam2.pos(2),cam2.pos(3),'2','FontSize',16);
img4 = cam_plot(cam2,pt,'g');

% epipolar points
[img2, invpt2] = cam_plot(cam1,cam2.pos);
[img3, invpt3] = cam_plot(cam2,cam1.pos);

pt1 = invpt2;
pt2 = invpt3;
plot3([pt1(1) pt2(1)],[pt1(2) pt2(2)],[pt1(3) pt2(3)],'k--','LineWidth',2);
draw_line(cam1.pos,invpt2,'r');
draw_line(cam2.pos,invpt3,'y');
hold off
axis equal
xlabel('x axis');
ylabel('y axis');
zlabel('z axis');
figure(2);
subplot(1,2,1);
plot(img1(1),img1(2),'ko','MarkerSize',10,'MarkerFaceColor','g');
hold on
plot(img2(1),img2(2),'rx','MarkerSize',10,'LineWidth',2);
hold off
grid
% focal length is 1 (from cam_obj b value) image half-width is scl
axis([-scl scl -scl scl]);
axis square
axis ij
title('camera 1');
subplot(1,2,2);
plot(img4(1),img4(2),'ko','MarkerSize',10,'MarkerFaceColor','g');
hold on
plot(img3(1),img3(2),'rx','MarkerSize',10,'LineWidth',2);
hold off
grid
axis([-scl scl -scl scl]);
axis square
axis ij
title('camera 2');