% HOMOTRANS - Homogeneous transformation of points/lines
%
% Function to perform a transformation on 2D or 3D homogeneous coordinates
% The resulting coordinates are normalised to have a homogeneous scale of 1
%
% Usage:
% t = homotrans(P, v);
%
% Arguments:
% P - 3 x 3 or 4 x 4 homogeneous transformation matrix
% v - 3 x n or 4 x n matrix of homogeneous coordinates
% Copyright (c) 2000-2007 Peter Kovesi
% School of Computer Science & Software Engineering
% The University of Western Australia
% pk at csse uwa edu au
% http://www.csse.uwa.edu.au/
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in
% all copies or substantial portions of the Software.
%
% The Software is provided "as is", without warranty of any kind.
function t = homotrans(P, v);
[dim,npts] = size(v);
if ~all(size(P)==dim)
error('Transformation matrix and point dimensions do not match');
end
t = P*v; % Transform
for r = 1:dim-1 % Now normalise
t(r,:) = t(r,:)./t(end,:);
end
t(end,:) = ones(1,npts);