ComputerGraphicsHomework/perspective/perspective.md
2022-10-11 08:38:01 +08:00

3.9 KiB
Raw Blame History

透视投影

总体思路:

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的正方体视点在44-2投影平面在$xOy$。  用蓝色图形表示原图形;红色图形表示透视移动后的图形;黑色图形表示投影结果;绿色平面是投影平面;粉色虚线表示进行透视所进行的变换对应关系;黄色虚线表示投影进行的变换关系。

3.1 一点透视

假设移动距离L=6M=5N=1

一点透视三维示意图

一点透视投影结果

3.2 二点透视

假设移动距离L=3M=3N=2φ=60$^。$

一二点透视三维示意图

二点透视投影结果

3.3 三点透视

假设移动距离L=3M=-3N=2φ=60$^。$,θ=60$^。$

三点透视三维示意图

三点透视投影结果