Main Content

viewmtx

查看变换矩阵

语法

viewmtx
T = viewmtx(az,el)
T = viewmtx(az,el,phi)
T = viewmtx(az,el,phi,xc)

说明

viewmtx 计算 4×4 正交或透视变换矩阵,该矩阵将四维齐次向量投射到二维视图表面(例如计算机屏幕)。

T = viewmtx(az,el) 返回对应于方位角 az 和仰角 el正交变换矩阵。az 是视点的方位角(即水平旋转,以度为单位)。el 是视点的仰角(以度为单位)。

T = viewmtx(az,el,phi) 返回透视变换矩阵。phi 是透视视角(以度为单位)。phi 是归一化绘图立方体(以度为单位)的对向视角,控制透视扭曲量。

Phi

描述

0 度

正交投影

10 度

类似于远摄镜头

25 度

类似于普通镜头

60 度

类似于广角镜头

T = viewmtx(az,el,phi,xc) 返回透视变换矩阵,并使用 xc 作为归一化绘图立方体中的目标点(即相机正在观察点 xc)。xc 是视图中心的目标点。将该点指定为三元素向量 xc = [xc,yc,zc] 并位于区间 [0,1] 中。默认值为 xc = [0,0,0]

四维齐次向量通过对相应的三维向量追加 1 构成。例如,[x,y,z,1] 是对应于三维点 [x,y,z] 的四维向量。

示例

全部折叠

使用默认视图方向确定对应于三维点 (0.5,0.0,-3.0) 的投射二维向量。请注意,该点为列向量。

A = viewmtx(-37.5,30);
x4d = [.5 0 -3 1]';
x2d = A*x4d;
x2d = x2d(1:2)
x2d = 2×1

    0.3967
   -2.4459

创建用于跟踪单位立方体的边的向量。

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)

以 25 度视角使用透视变换。

A = viewmtx(-37.5,30,25);
x4d = [.5 0 -3 1]';
x2d = A*x4d;
x2d = x2d(1:2)/x2d(4)
x2d = 2×1

    0.1777
   -1.8858

将立方体向量变换到屏幕上,然后绘制对象。

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)

版本历史记录

在 R2006a 之前推出