function out = cam_obj(cam,scl)

out = cam;
%pos = [5 10 5];
%target = [0 0 0];
pos = cam.pos;
target = cam.target;
% va = 30;

vn = pos - target;
up = [0 0 1];
vz = vn/norm(vn);
vx = cross(up,vz);
vx = vx/norm(vx);
vy = cross(vz,vx);
R = [vx; vy; -vz;];
T = [R -R*pos'];
out.T = T;

b = 1;
%scl = 2;

Tinv = [R' pos'];
out.Tinv = Tinv;
if nargin<2
    return
end
fr = [-scl -scl b 1; scl -scl b 1; scl scl b 1; -scl scl b 1; -scl -scl b 1];
pts = Tinv*fr';
mypts = pos'*ones(1,2) + [ zeros(3,1) -b*vz' ];
plot3(mypts(1,:),mypts(2,:),mypts(3,:),'b','LineWidth',2);
hold on;
plot3(pts(1,:),pts(2,:),pts(3,:),'b');
% plot3([pos(1) target(1)],[pos(2) target(2)],[pos(3) target(3)],'k','LineWidth',2);
% draw from center to edges of plot
% line([pos(1)*ones(1,5);  pts(1,:)],[pos(2)*ones(1,5); pts(2,:)],[pos(3)*ones(1,5); pts(3,:)]);
% for k=1:4
%     text(pts(1,k),pts(2,k),pts(3,k),sprintf('%d',k));
% end

% obj = [pt 1];
%
% img = T*obj';
% imgpt = [img(1)/img(3) img(2)/img(3) 1 1];
% invpt = Tinv*imgpt';
% plot3([obj(1) invpt(1)],[obj(2) invpt(2)],[obj(3) invpt(3)],'g','LineWidth',2);

hold off;
axis equal
xlabel('x axis');
ylabel('y axis');
zlabel('z axis');