2025.5.13山东大学软件学院计算机图形学期末考试回忆版本

发布于:2025-05-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

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 坐标(窗口客户区坐标):
x v = w ( x c − x min ) x max − x min x_v = \frac{w (x_c - x_{\text{min}})}{x_{\text{max}} - x_{\text{min}}} xv=xmaxxminw(xcxmin)

y v = h ( y c − y min ) y max − y min y_v = \frac{h (y_c - y_{\text{min}})}{y_{\text{max}} - y_{\text{min}}} yv=ymaxyminh(ycymin)

其中:

  • (x_v, y_v) 是窗口客户区中的坐标(相对于窗口左下角)。
  • (w, h)glViewport 的宽度和高度。
(2) Viewport 坐标 → 窗口客户区坐标

x w = u + x v x_w = u + x_v xw=u+xv

y w = u + y v y_w = u+y_v yw=u+yv

  • (u, v)glViewport 的起始位置。
(3) 窗口客户区坐标 → 屏幕坐标

将窗口客户区坐标转换为物理屏幕坐标:

  • 窗口左下角在屏幕上的位置为 (xpos, ypos)

  • 由于屏幕坐标原点在左上角,需翻转 Y 轴:
    y s = y pos + wh − y w y_s = y_{\text{pos}} + \text{wh} - y_w ys=ypos+whyw

    y s = x pos + x w y_s = x_{\text{pos}} + x_w ys=xpos+xw


3. 完整数学表达式

从 Clipping Window 到屏幕坐标的完整变换为:
x s = x pos + u + w ( x c − x min ) x max − x min y s = y pos + w h − ( v + h ( y c − y min ) y max − y min ) \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+xmaxxminw(xcxmin)=ypos+wh(v+ymaxyminh(ycymin))
其中:

  • (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) $ 在三角形 $ ABC $ 中的面积坐标权重

1. 面积坐标定义

对于三角形 A B C ABC ABC 和任意点 P P P,其面积坐标 ( λ 1 , λ 2 , λ 3 ) (\lambda_1, \lambda_2, \lambda_3) (λ1,λ2,λ3) 满足:
λ 1 = S △ P B C S △ A B C , λ 2 = S △ P A C S △ A B C , λ 3 = S △ P A B S △ A B C \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=SABCSPBC,λ2=SABCSPAC,λ3=SABCSPAB
且满足 λ 1 + λ 2 + λ 3 = 1 \lambda_1 + \lambda_2 + \lambda_3 = 1 λ1+λ2+λ3=1

2. 计算三角形面积

使用行列式公式计算三角形面积:
S = 1 2 ∣ x 1 ( y 2 − y 3 ) + x 2 ( y 3 − y 1 ) + x 3 ( y 1 − y 2 ) ∣ 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=21x1(y2y3)+x2(y3y1)+x3(y1y2)

(1) 计算 S △ A B C S_{\triangle ABC} SABC

顶点坐标: 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 △ A B C = 1 2 ∣ 0 ( 1 − 6 ) + 6 ( 6 − 0 ) + 4 ( 0 − 1 ) ∣ = 1 2 ∣ 0 + 36 − 4 ∣ = 1 2 × 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 SABC=210(16)+6(60)+4(01)=210+364=21×32=16

(2) 计算 S △ P B C S_{\triangle PBC} SPBC

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 △ P B C = 1 2 ∣ 4 ( 1 − 6 ) + 6 ( 6 − 3 ) + 4 ( 3 − 1 ) ∣ = 1 2 ∣ − 20 + 18 + 8 ∣ = 1 2 × 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 SPBC=214(16)+6(63)+4(31)=2120+18+8=21×6=3

(3) 计算 S △ P A C S_{\triangle PAC} SPAC

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 △ P A C = 1 2 ∣ 4 ( 0 − 6 ) + 0 ( 6 − 3 ) + 4 ( 3 − 0 ) ∣ = 1 2 ∣ − 24 + 0 + 12 ∣ = 1 2 × 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 SPAC=214(06)+0(63)+4(30)=2124+0+12=21×12=6

(4) 计算 S △ P A B S_{\triangle PAB} SPAB

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 △ P A B = 1 2 ∣ 4 ( 0 − 1 ) + 0 ( 1 − 3 ) + 6 ( 3 − 0 ) ∣ = 1 2 ∣ − 4 + 0 + 18 ∣ = 1 2 × 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 SPAB=214(01)+0(13)+6(30)=214+0+18=21×14=7

3. 计算面积坐标权重

λ 1 = S △ P B C S △ A B C = 3 16 , λ 2 = S △ P A C S △ A B C = 6 16 = 3 8 , λ 3 = S △ P A B S △ A B C = 7 16 \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=SABCSPBC=163,λ2=SABCSPAC=166=83,λ3=SABCSPAB=167

4. 最终结果

P ( 4 , 3 ) P(4,3) P(4,3) 的面积坐标权重为:
( λ 1 , λ 2 , λ 3 ) = ( 3 16 , 3 8 , 7 16 ) (\lambda_1, \lambda_2, \lambda_3) = \left( \frac{3}{16}, \frac{3}{8}, \frac{7}{16} \right) (λ1,λ2,λ3)=(163,83,167)

四、坐标变换(ppt原题)

  • 写出以点 ( x c , y c , z c ) (x_c,y_c,z_c) (xc,yc,zc)为中心,沿 x x x轴方向旋转 β \beta β角度的opengl代码
  • 推导出以向量 v ( x v , y v , z v ) 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)

网站公告

今日签到

点亮在社区的每一天
去签到