Main Content

transformPointsForward

Apply forward geometric transformation

Description

[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.

example

[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

Define a 3-by-3 geometric transformation matrix. This example specifies a matrix for an affine transformation consisting of vertical shear and horizontal stretch.

A = [1.5 0 0; 0.8 1 0; 0 0 1];

Create an affinetform2d object from the transformation matrix.

tform = affinetform2d(A);

Apply the forward geometric transformation to an input point.

u = 5;
v = 10;
[x,y] = transformPointsForward(tform,u,v)
x = 
7.5000
y = 
14

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

Define a rigid geometric transformation consisting only of translation.

t = [10 20.5 15];
tform = transltform3d(t);

Apply the forward geometric transformation to an input point.

u = 1;
v = 1;
w = 1.01;
[x,y,z] = transformPointsForward(tform,u,v,w)
x = 
11
y = 
21.5000
z = 
16.0100

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 listed in the table.

Geometric Transformation ObjectDescription
2-D Linear Geometric Transformations
transltform2dTranslation transformation
rigidtform2dRigid transformation: translation and rotation
simtform2dSimilarity transformation: translation, rotation, and isotropic scaling
affinetform2dAffine transformation: translation, rotation, anisotropic scaling, reflection, and shearing
projtform2dProjective transformation
3-D Linear Geometric Transformations
transltform3dTranslation transformation
rigidtform3dRigid transformation: translation and rotation
simtform3dSimilarity transformation: translation, rotation, and isotropic scaling
affinetform3dAffine transformation: translation, rotation, anisotropic scaling, reflection, and shearing
Nonlinear Geometric Transformations
geometricTransform2dCustom 2-D geometric transformation using point-wise mapping functions
geometricTransform3dCustom 3-D geometric transformation using point-wise mapping functions

Note

You can also specify tform as an object of type rigid2d, rigid3d, affine2d, affine3d, or projective2d. However, these objects are not recommended. For more information, see Version History.

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

Version History

Introduced in R2013a

expand all