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);

image-20250513212800494

解题步骤:从 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​−xmin​w(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​−ymin​h(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−yw​

    ys=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} } xs​ys​​=xpos​+u+xmax​−xmin​w(xc​−xmin​)​=ypos​+wh−(v+ymax​−ymin​h(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△ABC​S△PBC​​,λ2​=S△ABC​S△PAC​​,λ3​=S△ABC​S△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△ABC​S△PBC​​=163​,λ2​=S△ABC​S△PAC​​=166​=83​,λ3​=S△ABC​S△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)
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐