-
Notifications
You must be signed in to change notification settings - Fork 58
Expand file tree
/
Copy pathcreateRotationOz.m
More file actions
75 lines (68 loc) · 1.86 KB
/
createRotationOz.m
File metadata and controls
75 lines (68 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
function trans = createRotationOz(varargin)
%CREATEROTATIONOZ Create the 4x4 matrix of a 3D rotation around z-axis
%
% TRANS = createRotationOz(THETA);
% Returns the transform matrix corresponding to a rotation by the angle
% THETA (in radians) around the Oz axis. A rotation by an angle of PI/2
% would transform the vector [1 0 0] into the vector [0 1 0].
%
% The returned matrix has the form:
% [cos(THETA) -sin(THETA) 0 0]
% [sin(THETA) cos(THETA) 0 0]
% [ 0 0 1 0]
% [ 0 0 0 1]
%
% % Remove fourth row and fourth column
%
% TRANS = createRotationOz(ORIGIN, THETA);
% TRANS = createRotationOz(X0, Y0, Z0, THETA);
% Also specifies origin of rotation. The result is similar as performing
% translation(-X0, -Y0, -Z0), rotation, and translation(X0, Y0, Z0).
%
%
% See also:
% transforms3d, transformPoint3d, createRotationOx, createRotationOy
%
% ---------
%
% author : David Legland
% INRA - TPV URPOI - BIA IMASTE
% created the 06/04/2004.
%
% HISTORY
% 2008/11/24 changed convention for angle
% 22/04/2009 rename as createcreateRotationOz
% default values
dx = 0;
dy = 0;
dz = 0;
theta = 0;
% get input values
if length(varargin)==1
% only angle
theta = varargin{1};
elseif length(varargin)==2
% origin point (as array) and angle
var = varargin{1};
dx = var(1);
dy = var(2);
dz = var(3);
theta = varargin{2};
elseif length(varargin)==3
% origin (x and y) and angle
dx = varargin{1};
dy = varargin{2};
dz = varargin{3};
theta = varargin{3};
end
% compute coefs
cot = cos(theta);
sit = sin(theta);
% create transformation
trans = [...
cot -sit 0;...
sit cot 0;...
0 0 1];
% % add the translation part
% t = [1 0 0 dx;0 1 0 dy;0 0 1 dz;0 0 0 1];
% trans = t*trans/t;