www.gusucode.com > graphics 案例源码程序 matlab代码 > graphics/ComputeTransformationMatricesExample.m
%% Compute Transformation Matrices % Determine the projected two-dimensional vector corresponding to the % three-dimensional point (0.5,0.0,-3.0) using the default view direction. % Note that the point is a column vector. % Copyright 2015 The MathWorks, Inc. A = viewmtx(-37.5,30); x4d = [.5 0 -3 1]'; x2d = A*x4d; x2d = x2d(1:2) %% % Create vectors that trace the edges of a unit cube. 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]; %% % Transform the points in these vectors to the screen, then plot the % object. 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) %% % Use a perspective transformation with a 25 degree viewing angle. A = viewmtx(-37.5,30,25); x4d = [.5 0 -3 1]'; x2d = A*x4d; x2d = x2d(1:2)/x2d(4) %% % Transform the cube vectors to the screen and plot the object. A = viewmtx(-37.5,30,25); [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)