transformPointsForward

Apply forward geometric transformation

Description

example

[x,y] = transformPointsForward(tform,u,v) applies the forward transformation of 2-D geometric transformation tform to the points specified by coordinates u and v.

[x,y,z] = transformPointsForward(tform,u,v,w) applies the forward transformation of 3-D geometric transformation tform to the points specified by coordinates u, v, and w.

X = transformPointsForward(tform,U) applies the forward transformation of tform to the input coordinate matrix U and returns the coordinate matrix X. transformPointsForward maps the kth point U(k,:) to the point X(k,:).

Examples

collapse all

Create an affine2d object that defines the transformation.

theta = 10;

tform = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1])
tform = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

Apply forward geometric transformation to an input (u,v) point.

[X,Y] = transformPointsForward(tform,5,10)
X =

    6.6605


Y =

    8.9798

Specify the x- and y-coordinates vectors of five points to transform.

x = [10 11 15 2 2];
y = [15 32 34 7 10];

Define the inverse and forward mapping functions. Both functions accept and return points in packed (x,y) format.

inversefn = @(c) [c(:,1).^2,sqrt(c(:,2))];
forwardfn = @(c) [sqrt(c(:,1)),c(:,2).^2];

Create a 2-D geometric transform object, tform, that stores the inverse mapping function and the optional forward mapping function.

tform = geometricTransform2d(inversefn,forwardfn)
tform = 
  geometricTransform2d with properties:

        InverseFcn: @(c)[c(:,1).^2,sqrt(c(:,2))]
        ForwardFcn: @(c)[sqrt(c(:,1)),c(:,2).^2]
    Dimensionality: 2

Apply the inverse geometric transform to the input points.

[u,v] = transformPointsInverse(tform,x,y)
u = 1×5

   100   121   225     4     4

v = 1×5

    3.8730    5.6569    5.8310    2.6458    3.1623

Apply the forward geometric transform to the transformed points u and v.

[x,y] = transformPointsForward(tform,u,v)
x = 1×5

    10    11    15     2     2

y = 1×5

   15.0000   32.0000   34.0000    7.0000   10.0000

Create an affine3d object that defines the transformation.

tform = affine3d([3 1 2 0;4 5 8 0;6 2 1 0;0 0 0 1])
tform = 

  affine3d with properties:

                 T: [4×4 double]
    Dimensionality: 3

Apply forward transformation of 3-D geometric transformation to an input (u,v,w) point.

[X,Y,Z] = transformPointsForward(tform,2,3,5)
X =

    48


Y =

    27


Z =

    33

Specify the x-, y- and the z-coordinate vectors of five points to transform.

x = [3 5 7 9 11];
y = [2 4 6 8 10];
z = [5 9 13 17 21];

Define the inverse and forward mapping functions that accept and return points in packed (x,y,z) format.

inverseFcn = @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2];
forwardFcn = @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))];

Create a 3-D geometric transformation object, tform, that stores these inverse and forward mapping functions.

tform = geometricTransform3d(inverseFcn,forwardFcn)
tform = 
  geometricTransform3d with properties:

        InverseFcn: @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2]
        ForwardFcn: @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))]
    Dimensionality: 3

Apply the inverse transformation of this 3-D geometric transformation to the input points.

[u,v,w] = transformPointsInverse(tform,x,y,z)
u = 1×5

     9    25    49    81   121

v = 1×5

     4    16    36    64   100

w = 1×5

    25    81   169   289   441

Apply the forward geometric transform to the transformed points u, v, and w.

[x,y,z] = transformPointsForward(tform,u,v,w)
x = 1×5

     3     5     7     9    11

y = 1×5

     2     4     6     8    10

z = 1×5

     5     9    13    17    21

Input Arguments

collapse all

Geometric transformation, specified as a geometric transformation object.

For 2-D geometric transformations, tform can be a rigid2d, affine2d, projective2d, or geometricTransform2d geometric transformation object.

For 3-D geometric transformations, tform can be an affine3d, rigid3d, or geometricTransform3d geometric transformation object.

x-coordinates of points to be transformed, specified as an m-by-n or m-by-n-by-p numeric array. The number of dimensions of u matches the dimensionality of tform.

Data Types: single | double

y-coordinates of points to be transformed, specified as an m-by-n or m-by-n-by-p numeric array. The size of v must match the size of u.

Data Types: single | double

z-coordinates of points to be transformed, specified as an m-by-n-by-p numeric array. w is used only when tform is a 3-D geometric transformation. The size of w must match the size of u.

Data Types: single | double

Coordinates of points to be transformed, specified as an l-by-2 or l-by-3 numeric array. The number of columns of U matches the dimensionality of tform.

The first column lists the x-coordinate of each point to transform, and the second column lists the y-coordinate. If tform represents a 3-D geometric transformation, U has size l-by-3 and the third column lists the z-coordinate of the points to transform.

Data Types: single | double

Output Arguments

collapse all

x-coordinates of points after transformation, returned as an m-by-n or m-by-n-by-p numeric array. The number of dimensions of x matches the dimensionality of tform.

Data Types: single | double

y-coordinates of points after transformation, returned as an m-by-n or m-by-n-by-p numeric array. The size of y matches the size of x.

Data Types: single | double

z-coordinates of points after transformation, returned as an m-by-n-by-p numeric array. The size of z matches the size of x.

Data Types: single | double

Coordinates of points after transformation, returned as a numeric array. The size of X matches the size of U.

The first column lists the x-coordinate of each point after transformation, and the second column lists the y-coordinate. If tform represents a 3-D geometric transformation, the third column lists the z-coordinate of the points after transformation.

Data Types: single | double

Introduced in R2013a