T = viewmtx(az,el)
T = viewmtx(az,el,phi)
T = viewmtx(az,el,phi,xc)
viewmtx
computes 4-by-4 orthographic or perspective transformation matrices that project four-dimensional homogeneous vectors onto a two-dimensional view surface (for example, your computer screen). A four-dimensional homogenous vector is formed by appending a 1 to the corresponding three-dimensional vector. For instance the four-dimensional vector corresponding to the three-dimensional point [x,y,z]'
is [x,y,z,1]'
. The x
and y
components of the projected vector are the desired two-dimensional components (see "Examples" below).
T = viewmtx(az,el)
returns an orthographic transformation matrix corresponding to azimuth az
and elevation el
. viewmtx
uses the same definition for azimuth and elevation as view
, in particular, az
and el
are specified in degrees. T = viewmtx(az,el)
returns the same matrix as the commands
but doesn't change the current view.view(az,el)
T = view
T = viewmtx(az,el,phi)
returns a perspective transformation matrix. phi
is the subtended view angle of the normalized plot cube (in degrees) and controls the amount of perspective distortion:
------------------------------- Phi Description ------------------------------- 0 Orthographic projection. 10 Similar to telephoto lens. 25 Similar to normal lens. 60 Similar to wide angle lens. -------------------------------The matrix returned can be used to set the view transformation with
view(T)
. The 4-by-4 perspective transformation matrix transforms four-dimensional homogeneous vectors into unnormalized vectors of the form (x,y,z,w) where w is not equal to 1. The x- and y -components of the normalized vector (x/w, y/w, z/w, 1) are the desired two-dimensional components (see example below).
T = viewmtx(az,el,phi,xc)
returns the perspective transformation matrix using xc
as the target point within the normalized plot cube, (that is the camera is looking at the point xc
). The coordinate center is specified as a three-element vector, xc = [xc,yc,zc]
. Valid values for the components of xc
are in the interval [0,1]. The default value is xc = [0,0,0]
.
Vectors that trace the edges of a unit cube areA = viewmtx(-37.5,30);
x4d = [.5 0 -3 1]';
x2d = A
*x4d;
x2d = x2d(1:2)
x2d =
0.3967
-2.4459
Transform the points in these vectors to the screen, and then plot the object.x = [0 1 1 0 0 0 1 1 0 0 1 1 1 1 0 0];
y = [0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1];
z = [0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0];
A = viewmtx(-37.5,30);
[m,n] = size(x);
x4d = [x(:),y(:),z(:),ones(m
*n,1)]';
x2d = A
*x4d;
x2 = zeros(m,n); y2 = zeros(m,n);
x2(:) = x2d(1,:);
y2(:) = x2d(2,:);
plot(x2,y2)
Now repeat the above, but use a perspective transformation.
And again transform the cube vectors to the screen, and plot the object.A = viewmtx(-37.5,30,25);
x4d = [.5 0 -3 1]';
x2d = A
*x4d;
x2d = x2d(1:2)/x2d(4);
% Normalize
x2d =
0.1777
-1.8858
A = viewmtx(-37.5,30,2);
[m,n] = size(x);
x4d = [x(:),y(:),z(:),ones(m
*n,1)]';
x2d = A
*x4d;
x2 = zeros(m,n); y2 = zeros(m,n);
x2(:) = x2d(1,:)./x2d(4,:);
y2(:) = x2d(2,:)./x2d(4,:);
plot(x2,y2)
view
(c) Copyright 1994 by The MathWorks, Inc.