2025.5.13山东大学软件学院计算机图形学期末考试回忆版本
2025.5.13山东大学软件学院计图期末考试回忆版本
学院:软件学院
老师:周元峰、魏广顺
一、简述题(2024原题一)
1.图形绘制流水线的组成和作用
2.双缓冲机制是什么,有什么作用?
3.Delaunay三角化的四条性质

二、坐标变换(往年原题)
- 通过以下代码,求Clipping window坐标
(xc,yc)到screen坐标(xs,ys)的变换,写出数学表达式。(题目无图)
gluOrtho2D(xmin, xmax, ymin, ymax);
glViewport(u, v, w, h);
glutInitWindowPosition(xpos, ypos);
glutInitWindowSize(ww, wh);

解题步骤:从 Clipping Window 坐标 (xc, yc) 到屏幕坐标 (xs, ys) 的完整变换
1. 坐标系说明
- Clipping Window:由
gluOrtho2D(xmin, xmax, ymin, ymax)定义,坐标原点在左下角,范围[xmin, xmax] × [ymin, ymax]。 - Viewport:由
glViewport(u, v, w, h)定义,坐标原点在左下角,范围[u, u+w] × [v, v+h](相对于窗口客户区)。 - Window:由
glutInitWindowPosition(xpos, ypos)和窗口大小定义,坐标原点在左下角(窗口客户区左下角为(xpos, ypos))。
注意:题目明确要求所有坐标原点均在左下角,但屏幕坐标原点在左上角,因此需要 Y 轴翻转。
2. 变换步骤
(1) Clipping Window → Viewport 坐标
将 Clipping Window 坐标线性映射到 Viewport 坐标(窗口客户区坐标):
xv=w(xc−xmin)xmax−xmin
x_v = \frac{w (x_c - x_{\text{min}})}{x_{\text{max}} - x_{\text{min}}}
xv=xmax−xminw(xc−xmin)
yv=h(yc−ymin)ymax−ymin y_v = \frac{h (y_c - y_{\text{min}})}{y_{\text{max}} - y_{\text{min}}} yv=ymax−yminh(yc−ymin)
其中:
(x_v, y_v)是窗口客户区中的坐标(相对于窗口左下角)。(w, h)是glViewport的宽度和高度。
(2) Viewport 坐标 → 窗口客户区坐标
xw=u+xv x_w = u + x_v xw=u+xv
yw=u+yv y_w = u+y_v yw=u+yv
(u, v)是glViewport的起始位置。
(3) 窗口客户区坐标 → 屏幕坐标
将窗口客户区坐标转换为物理屏幕坐标:
-
窗口左下角在屏幕上的位置为
(xpos, ypos)。 -
由于屏幕坐标原点在左上角,需翻转 Y 轴:
ys=ypos+wh−yw y_s = y_{\text{pos}} + \text{wh} - y_w ys=ypos+wh−ywys=xpos+xw y_s = x_{\text{pos}} + x_w ys=xpos+xw
3. 完整数学表达式
从 Clipping Window 到屏幕坐标的完整变换为:
xs=xpos+u+w(xc−xmin)xmax−xminys=ypos+wh−(v+h(yc−ymin)ymax−ymin)
\boxed{
\begin{aligned}
x_s &= x_{\text{pos}} + u + \frac{w (x_c - x_{\text{min}})}{x_{\text{max}} - x_{\text{min}}} \\
y_s &= y_{\text{pos}} + wh - \left( v + \frac{h (y_c - y_{\text{min}})}{y_{\text{max}} - y_{\text{min}}} \right)
\end{aligned}
}
xsys=xpos+u+xmax−xminw(xc−xmin)=ypos+wh−(v+ymax−yminh(yc−ymin))
其中:
(x_s, y_s)是屏幕坐标(原点在左上角)。(xpos, ypos)是窗口左下角在屏幕上的位置。wh是窗口客户区的高度(即glutInitWindowSize(ww, wh)中的wh)。- 其他参数同前。
三、线性插值
- 已知三角形三个顶点A(0,0),B(6,1),C(4,6)A(0, 0),B(6,1), C(4,6)A(0,0),B(6,1),C(4,6),按照面积坐标线性插值,求点(4,3)(4,3)(4,3)的面积坐标权重

解题步骤:计算点 P(4,3)P(4,3)P(4,3) 在三角形 ABCABCABC 中的面积坐标权重
1. 面积坐标定义
对于三角形 ABCABCABC 和任意点 PPP,其面积坐标 (λ1,λ2,λ3)(\lambda_1, \lambda_2, \lambda_3)(λ1,λ2,λ3) 满足:
λ1=S△PBCS△ABC,λ2=S△PACS△ABC,λ3=S△PABS△ABC
\lambda_1 = \frac{S_{\triangle PBC}}{S_{\triangle ABC}}, \quad \lambda_2 = \frac{S_{\triangle PAC}}{S_{\triangle ABC}}, \quad \lambda_3 = \frac{S_{\triangle PAB}}{S_{\triangle ABC}}
λ1=S△ABCS△PBC,λ2=S△ABCS△PAC,λ3=S△ABCS△PAB
且满足 λ1+λ2+λ3=1\lambda_1 + \lambda_2 + \lambda_3 = 1λ1+λ2+λ3=1。
2. 计算三角形面积
使用行列式公式计算三角形面积:
S=12∣x1(y2−y3)+x2(y3−y1)+x3(y1−y2)∣
S = \frac{1}{2} \left| x_1(y_2 - y_3) + x_2(y_3 - y_1) + x_3(y_1 - y_2) \right|
S=21∣x1(y2−y3)+x2(y3−y1)+x3(y1−y2)∣
(1) 计算 S△ABCS_{\triangle ABC}S△ABC
顶点坐标:A(0,0)A(0,0)A(0,0)、B(6,1)B(6,1)B(6,1)、C(4,6)C(4,6)C(4,6)
S△ABC=12∣0(1−6)+6(6−0)+4(0−1)∣=12∣0+36−4∣=12×32=16
S_{\triangle ABC} = \frac{1}{2} \left| 0(1 - 6) + 6(6 - 0) + 4(0 - 1) \right| = \frac{1}{2} \left| 0 + 36 - 4 \right| = \frac{1}{2} \times 32 = 16
S△ABC=21∣0(1−6)+6(6−0)+4(0−1)∣=21∣0+36−4∣=21×32=16
(2) 计算 S△PBCS_{\triangle PBC}S△PBC
点 P(4,3)P(4,3)P(4,3)、B(6,1)B(6,1)B(6,1)、C(4,6)C(4,6)C(4,6)
S△PBC=12∣4(1−6)+6(6−3)+4(3−1)∣=12∣−20+18+8∣=12×6=3
S_{\triangle PBC} = \frac{1}{2} \left| 4(1 - 6) + 6(6 - 3) + 4(3 - 1) \right| = \frac{1}{2} \left| -20 + 18 + 8 \right| = \frac{1}{2} \times 6 = 3
S△PBC=21∣4(1−6)+6(6−3)+4(3−1)∣=21∣−20+18+8∣=21×6=3
(3) 计算 S△PACS_{\triangle PAC}S△PAC
点 P(4,3)P(4,3)P(4,3)、A(0,0)A(0,0)A(0,0)、C(4,6)C(4,6)C(4,6)
S△PAC=12∣4(0−6)+0(6−3)+4(3−0)∣=12∣−24+0+12∣=12×12=6
S_{\triangle PAC} = \frac{1}{2} \left| 4(0 - 6) + 0(6 - 3) + 4(3 - 0) \right| = \frac{1}{2} \left| -24 + 0 + 12 \right| = \frac{1}{2} \times 12 = 6
S△PAC=21∣4(0−6)+0(6−3)+4(3−0)∣=21∣−24+0+12∣=21×12=6
(4) 计算 S△PABS_{\triangle PAB}S△PAB
点 P(4,3)P(4,3)P(4,3)、A(0,0)A(0,0)A(0,0)、B(6,1)B(6,1)B(6,1)
S△PAB=12∣4(0−1)+0(1−3)+6(3−0)∣=12∣−4+0+18∣=12×14=7
S_{\triangle PAB} = \frac{1}{2} \left| 4(0 - 1) + 0(1 - 3) + 6(3 - 0) \right| = \frac{1}{2} \left| -4 + 0 + 18 \right| = \frac{1}{2} \times 14 = 7
S△PAB=21∣4(0−1)+0(1−3)+6(3−0)∣=21∣−4+0+18∣=21×14=7
3. 计算面积坐标权重
λ1=S△PBCS△ABC=316,λ2=S△PACS△ABC=616=38,λ3=S△PABS△ABC=716 \lambda_1 = \frac{S_{\triangle PBC}}{S_{\triangle ABC}} = \frac{3}{16}, \quad \lambda_2 = \frac{S_{\triangle PAC}}{S_{\triangle ABC}} = \frac{6}{16} = \frac{3}{8}, \quad \lambda_3 = \frac{S_{\triangle PAB}}{S_{\triangle ABC}} = \frac{7}{16} λ1=S△ABCS△PBC=163,λ2=S△ABCS△PAC=166=83,λ3=S△ABCS△PAB=167
4. 最终结果
点 P(4,3)P(4,3)P(4,3) 的面积坐标权重为:
(λ1,λ2,λ3)=(316,38,716)
(\lambda_1, \lambda_2, \lambda_3) = \left( \frac{3}{16}, \frac{3}{8}, \frac{7}{16} \right)
(λ1,λ2,λ3)=(163,83,167)
四、坐标变换(ppt原题)
- 写出以点(xc,yc,zc)(x_c,y_c,z_c)(xc,yc,zc)为中心,沿xxx轴方向旋转β\betaβ角度的opengl代码
- 推导出以向量v(xv,yv,zv)v(x_v,y_v,z_v)v(xv,yv,zv)为轴,旋转θ\thetaθ角度的变换矩阵
五、z-buffer(2024原题五)
- 复杂场景下(不包含透明或半透明物体)的消隐算法,写出具体的算法描述(z-buffer)
六、phong光照模型(2024原题六)
- phong模型的组成和Blinn的改进模型
- phong着色的优点是什么?为什么提高了绘图质量?
七、mipmap(2024原题七)
-
mipmap的原理
-
mipmap的存储量
-
如何实现分级
八、光栅化、反走样
- 简述Bresenham算法的主要思想和算法优秀之处(2024原题三)
- 简述直线反走样算法(SSAA、MSAA)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)