
图形学笔记。GAMES101 课后任务,推导证明透视投影任意一点经过透视投影后 z 坐标相对于之前有什么变化
齐次坐标知识点: ⎡⎢
⎢
⎢⎣xyz1⎤⎥
⎥
⎥⎦⇒⎡⎢
⎢
⎢⎣nxnynzn⎤⎥
⎥
⎥⎦ 两个都表示同一个点
透视投影:先将远截面按一定规则缩放到跟近截面一样大,然后再正交投影
缩放规则:远截面缩放后z不变,缩放过后大小同近截面相同。

截取yz平面,ZNear=n,ZFar=f ,则任意一点经过缩放后: y′=nzy (相似三角形)
xz平面同理: x′=nzx ,即 ⎡⎢
⎢
⎢⎣xyz1⎤⎥
⎥
⎥⎦⇒⎡⎢
⎢
⎢
⎢⎣nzxnzyunknown1⎤⎥
⎥
⎥
⎥⎦⇒⎡⎢
⎢
⎢⎣nxnyunknownz⎤⎥
⎥
⎥⎦
如此可以确定一部分矩阵参数:
Mpersp→ortho=⎡⎢
⎢
⎢⎣n0000n00............0010⎤⎥
⎥
⎥⎦
对于近截面和远截面上的点,透视变换后z是不变的(缩放规则)
只看第三行的结果
[ABCD]⎡⎢
⎢
⎢⎣xyz1⎤⎥
⎥
⎥⎦⇒z2
显然 A=B=0 ,代入 Z=n,Z=f 有
Cn+D=n2
Cf+D=f2
得到 C=n+f,D=−nf
最后求得
Mpersp→ortho=⎡⎢
⎢
⎢⎣n0000n0000n+f−nf0010⎤⎥
⎥
⎥⎦
课后问题:对于任意一个满足 n≤z≤f 的点,经过透视投影后, z 坐标相对于之前有什么变化
Mpersp→ortho⎡⎢
⎢
⎢⎣xyz1⎤⎥
⎥
⎥⎦⇒⎡⎢
⎢
⎢
⎢⎣nxny(n+f)z−nfz⎤⎥
⎥
⎥
⎥⎦⇒⎡⎢
⎢
⎢
⎢
⎢⎣nzxnzy(n+f)z−nfz1⎤⎥
⎥
⎥
⎥
⎥⎦
比较 f(z)=(n+f)z−nfz−z 跟0的关系即可,不妨乘以一个 z 得到:
z∗f(z)=−z2+(n+f)z−nf=(z−n)(f−z)
又 n≤z≤f ,z∗f(z)≥0 ,故 f(z)≤0,即透视投影后, z 坐标相对于以前离相机更远了
对 f(z)=(n+f)z−nfz−z ,对 z 求偏导
∂f∂z=(n+f)z−(n+f)z+nfz2−1∂f∂z=nfz2−1=nf−z2z2z2=nfz=±√nf
从 n 到 −√nf 单调递增,从 −√nf 到 f 单调递减
分数怎么求导
g(x)≠0,f(x),g(x) 均可导 [f(x)g(x)]′=f′(x)g(x)−g′(x)f(x)[g(x)]2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!