Apply forward geometric transformation
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
tform
— Geometric transformationGeometric 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.
u
— x-coordinates of points to be transformedx-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
v
— y-coordinates of points to be transformedy-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
U
— Coordinates of points to be transformedCoordinates 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
x
— x-coordinates of points after transformationx-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
— y-coordinates of points after transformationy-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
— z-coordinates of points after transformationz-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
X
— Coordinates of points after transformationCoordinates 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
You have a modified version of this example. Do you want to open this example with your edits?