| loc2loc(aP, gOa, gRa, gOb, gRb, dim)
|
function bP = loc2loc(aP, gOa, gRa, gOb, gRb, dim)
%LOC2LOC Transformation from a local reference frame to another.
% bP = LOC2LOC(aP, gOa,gRa, gOb,GRb) is equivalent to
% bP = LOC2LOC(aP, gOa,gRa, gOb,GRb, DIM), where DIM is the first
% dimension of length 3 in arrays aP, gOa, gRa, gOb, GRb.
%
% bP = LOC2LOC(aP, gOa,gRa, gOb,GRb, DIM) is an array of vector(s)
% representing the position(s) of a point P in a local reference frame B,
% computed by transforming the array of vectors aP. Arrays aP, bP, gOa,
% and gOb must have the same size S. The size of gRa and gRb, if the
% length of their dimension DIM + 1 is not considered, must be equal to
% S. For instance, if aP is M-by-3 and DIM = 2, gRa must be M-by-3-by-3.
%
% aP Position(s) of point P in the local reference frame A.
% gOa Position(s) of the origin of A in the global reference frame G.
% gRa Orientation(s) of A in the global reference frame G.
% gOb Position(s) of the origin of B in the global reference frame G.
% gRb Orientation(s) of B in the global reference frame G.
% DIM The dimension along which positnion vectors are contained in
% arrays aP, bP, gOa, gOb.
%
% Array Dimensions (*) Containing Along dimension(s)
% -----------------------------------------------------------------------
% aP, bP N 3-D position vectors DIM
% gOa, gOb N 3-D position vectors DIM
% gRa, gRb N + 1 3-by-3 orient. matrices DIM and DIM + 1
% -----------------------------------------------------------------------
% (*) N is the number of dimensions in aP, bP, gOa, gOb. If they are
% 3-by-1 arrays, they are treated as 1-D arrays (N = 1 is assumed,
% DIM = 1 is required), and gRa and gRb must be single 3-by-3
% orientation matrices.
%
% Example:
% This function is a simple application of MULTIPROD. See examples in
% MULTIPROD.
%
% See also REFSYS, MULTIPROD, MULTITRANSP.
% $ Version: 1.0 $
% CODE by: Paolo de Leva (IUSM, Rome, IT) 2005 Oct 8
% COMMENTS by: Code author 2005 Oct 8
% OUTPUT tested by: Code author 2005 Oct 8
% -------------------------------------------------------------------------
% Transformation from G to B
bRg = multitransp(gRb, dim);
bOa = multiprod(bRg, -gOb + gOa, [dim dim+1], dim); % Rotation
% Transformation from A to B
bRa = multiprod(bRg, gRa, [dim dim+1]); % Concatenating rotations
bP = bOa + multiprod(bRa, aP, [dim dim+1], dim);
|
|