source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/vlutil/toolbox/waffine.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 2.2 KB
Line 
1function varargout = affine(A,T,varargin)
2% AFFINE  Apply affine transformation to points
3%  Y = AFFINE(A,T,X) applies the affine transformatio (A,T) to points
4%  X. X contains one point per column.
5%
6%  [Y1,Y2,...] = AFFINE(A,T,X1,X2,...) applies the affine
7%  transformations to points (X1,X2,...). Arrays X1,X2,... contain one
8%  of the coordinates of the points each.
9
10% AUTORIGHTS
11% Copyright (C) 2006 Andrea Vedaldi
12%       
13% This file is part of VLUtil.
14%
15% VLUtil is free software; you can redistribute it and/or modify
16% it under the terms of the GNU General Public License as published by
17% the Free Software Foundation; either version 2, or (at your option)
18% any later version.
19%
20% This program is distributed in the hope that it will be useful,
21% but WITHOUT ANY WARRANTY; without even the implied warranty of
22% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23% GNU General Public License for more details.
24%
25% You should have received a copy of the GNU General Public License
26% along with this program; if not, write to the Free Software Foundation,
27% Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
28
29if numel(varargin)==1
30
31  X = varargin{1} ;
32 
33  [n,k] = size(X);
34  if n == 2
35    Y(1,:) = A(1,1)*X(1,:) + A(1,2)*X(2,:) + T(1) ;
36    Y(2,:) = A(2,1)*X(1,:) + A(2,2)*X(2,:) + T(2) ;
37  elseif n == 3
38    Y(1,:) = A(1,1)*X(1,:) + A(1,2)*X(2,:) + A(1,3) * X(3,:) + T(1) ;
39    Y(2,:) = A(2,1)*X(1,:) + A(2,2)*X(2,:) + A(2,3) * X(3,:) + T(2) ;
40    Y(3,:) = A(3,1)*X(1,:) + A(3,2)*X(2,:) + A(3,3) * X(3,:) + T(3) ;
41  else
42    Y = A*X + repmat(T,1,k) ;
43  end
44 
45  varargout{1} = Y ;
46 
47else
48 
49  n = numel(varargin) ;
50
51  if n == 2
52    varargout{1} = A(1,1)*varargin{1} + A(1,2)*varargin{2} + T(1) ;
53    varargout{2} = A(2,1)*varargin{1} + A(2,2)*varargin{2} + T(2) ;
54  elseif n == 3
55    varargout{1} = A(1,1)*varargin{1} + A(1,2)*varargin{2} + A(1,3)*varargin{3} + T(1) ;
56    varargout{2} = A(2,1)*varargin{1} + A(2,2)*varargin{2} + A(2,3)*varargin{3} + T(2) ;
57    varargout{3} = A(3,1)*varargin{1} + A(3,2)*varargin{2} + A(3,3)*varargin{3} + T(3) ;
58  else
59    for i=1:n
60      varargout{i} = T(i) * ones(size(varargin{1})) ;
61      for j=1:n
62        varargout{i} = varargout{i} + A(i,j)*varargin{j} ;
63      end
64    end
65  end
66end
Note: See TracBrowser for help on using the repository browser.