# 透视投影 # 总体思路:  1.先透视变换 $P_{透视}$  2.再投影 $P_{投影}$  3.最终的变换矩阵 $T = P_{透视}P_{投影}$  4.定点序列 $V_{new}=V_{origin}T $ # 1. 透视 ## 1.1 一点透视 ### 步骤:  (1) 进行平移变换,将三维形体平移到适当位 置l、m、n;  (2)进行透视变换;  (3)进行投影变换,向xoy平面作正投影变换,将结果变换到xoy平面上。  变换矩阵:
$P_{透视}=\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0\\L&M&N&1\end{bmatrix}$
## 1.2 两点透视 ### 步骤:  (1)先将三维形体平移到适当位置,使视点有一定 高度,且使形体的主要表面不会积聚成线;  (2)将形体绕y轴旋转一个φ⻆(φ<90 ̊),方向满足 右手定则;  (3)进行透视变换;  (4)最后向xoy面作正投影,即得二点透视图。  变换矩阵:
$P_{透视}=\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0\\L&M&N&1\end{bmatrix}\begin{bmatrix} cos(φ)&0&sin(φ)&0\\0&1&0&0\\-sin(φ)&0&cos(φ)&0\\0&0&0&1\end{bmatrix}$
## 1.3 三点透视 ### 步骤:  (1)首先将三维形体平移到适当位置;;  (2)将形体进行透视变换;  (3)然后使形体先绕y轴旋转φ⻆;  (4)再绕x轴旋转θ⻆;  (5)将变形且旋转后的形体向xoy面作正投影。  变换矩阵:
$P_{透视}=\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0\\L&M&N&1\end{bmatrix}\begin{bmatrix} cosφ&0&sinφ&0\\0&1&0&0\\-sinφ&0&cosφ&0\\0&0&0&1\end{bmatrix}\begin{bmatrix} 1&0&0&0\\0&cosθ&sinθ&0\\0&-sinθ&cosθ&0\\0&0&0&1\end{bmatrix}$
# 2 投影
  首先考虑这样一种最简单的情况,假设投影中心为坐标为 $(0, 0, -d)$ ,空间中任意一点$P(x,y,z)$,投影到$xOy$平面一点$P^’(x^’,y^’,0)$,由相似三角形易证:
$x^’= \frac{d}{d+z}*x$ $y^’= \frac{d}{d+z}*y$
  易得,$P^’$的齐次坐标位为
$[\frac{d}{d+z}*x,\frac{d}{d+z}*y,0,1]$
  即
$[x,y,0,\frac{1+z}d]$
  因此,投投影矩阵为
$P_{投影}=\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&0& \frac{1}{d} \\ 0&0&0&1 \\ \end{bmatrix}$
  推广:空间任意一点作为投影中心,投影到xOy平面
$P_{投影}=\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0 \\ -x_0&-y_0&0&1 \\ \end{bmatrix}\begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&0& \frac{1}{d} \\ 0&0&0&1 \\ \end{bmatrix} \begin{bmatrix} 1&0&0&0\\0&1&0&0\\0&0&1&0 \\ x_0&y_0&0&1\\ \end{bmatrix}= \begin{bmatrix} 1&0&0&0\\0&1&0&0\\\frac{x}{d}& \frac{y}{d}&0& \frac{1}{d} \\ 0&0&0&1\\ \end{bmatrix}$
# 3 实例  假设初始顶点序列表示一个顶点在原点,边长为2的正方体,视点在(4,4,-2),投影平面在$xOy$。  用蓝色图形表示原图形;红色图形表示透视移动后的图形;黑色图形表示投影结果;绿色平面是投影平面;粉色虚线表示进行透视所进行的变换对应关系;黄色虚线表示投影进行的变换关系。 ## 3.1 一点透视  假设移动距离L=6,M=5,N=1

一点透视三维示意图

一点透视投影结果

## 3.2 二点透视  假设移动距离L=3,M=3,N=2,φ=60$^。$

一二点透视三维示意图

二点透视投影结果

## 3.3 三点透视  假设移动距离L=3,M=-3,N=2,φ=60$^。$,θ=60$^。$

三点透视三维示意图

三点透视投影结果