% Q = vgg_line3d_Ppv(P)  Transforms a camera matrix to use it with Pluecker vector 3d line representation.
%
% P ... double(3,4), ordinary camera matrix
% Q ... double(6,3), transformed camera matrix (quadratic function of elements of P)
%   such that the projection of a 3d line by the camera is given by
%
%     l = Q*L
%
% where l is 1-by-3 image line vector, and L is 1-by-6 Pluecker vector of the 3d line.

% T.Werner

function Q = vgg_line3d_Ppv(P)
 
K = size(P,1)/3;
i1 = 1:3:3*K;
i2 = 2:3:3*K;
i3 = 3:3:3*K;

Q(:,i1) = vgg_line3d_pv_from_XY(P(i2,:)',P(i3,:)')';
Q(:,i2) = vgg_line3d_pv_from_XY(P(i3,:)',P(i1,:)')';
Q(:,i3) = vgg_line3d_pv_from_XY(P(i1,:)',P(i2,:)')';

return