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

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)
STM32F103是意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M3内核的微控制器,广泛应用于工业控制、物联网设备等领域。本资料包主要提供了STM32F103在实现RS485通信及Modbus RTU协议的主机和从机模式下的源代码实例,帮助开发者快速理解和应用这一通讯技术。 RS485是一种物理层通信标准,用于构建多点数据通信网络,具有传输距离远、抗干扰能力强的特点。它采用差分信号传输方式,可以实现双向通信,适合于长距离的工业环境。在RS485网络中,通常有一个主机(Master)和一个或多个从机(Slave),主机负责发起通信,从机响应主机的请求。 Modbus RTU(Remote Terminal Unit)是一种常用的过程控制工业通信协议,基于ASCII或RTU(远程终端单元)报文格式,常用于PLC(可编程逻辑控制器)和嵌入式系统之间的通信。Modbus RTU使用串行通信接口,如RS485,以减少布线成本和提高通信效率。 在STM32F103上实现RS485 Modbus RTU通信,首先需要配置GPIO口作为RS485的硬件接口,包括数据线(一般为RX和TX)和方向控制线(DE和RE)。DE线用于控制发送数据时的数据线方向,RE线则用于接收数据时的方向。这些设置可以通过STM32的HAL库或LL库进行编程。 接着,你需要编写Modbus RTU协议栈的实现,这包括解析和构造Modbus报文、错误检测与处理、超时管理等。Modbus RTU报文由功能码、地址、数据和CRC校验码组成。主机向从机发送请求报文,从机会根据接收到的功能码执行相应的操作,并返回响应报文。 在主机端,你需要实现发送请求和接收响应的函数,以及解析从机返回的数据。在从机端,你需要监听串口,解析接收到的请求,执行相应的功能并构造响应报文。
内容概要:本文档详细介绍了一个使用Python实现最小二乘支持向量机(LSSVM)进行时间序列预测的项目实例。项目背景指出,传统的时间序列预测方法在处理非线性、复杂数据时存在局限性,而LSSVM通过将SVM的二次规划问题转化为线性方程组求解,提高了计算效率和预测精度。项目目标包括数据预处理、特征提取、模型构建、模型评估、优化与调参以及可视化展示。项目挑战主要集中在数据质量、模型泛化能力、计算效率、模型解释性、实时性和超参数优化等方面。项目特点与创新体现在高效的预测算法、多样化的数据处理方法、自动化的特征提取、多维度的模型评估、可视化的结果展示和高效的超参数优化。最后,文档展示了模型架构和具体的代码实现,包括数据预处理、LSSVM模型的构建与训练、预测和评估。 适合人群:具备一定编程基础,特别是对Python和机器学习有一定了解的研发人员,尤其是从事时间序列预测相关工作的数据科学家和工程师。 使用场景及目标:①适用于金融、气象、交通、能源、医疗、制造业和零售业等领域的时间序列预测任务;②帮助用户理解LSSVM算法的工作原理及其相对于传统SVM的优势;③通过实际代码示例,指导用户如何实现和优化LSSVM模型,以提高预测精度和处理大规模数据的能力。 阅读建议:本项目不仅提供了详细的理论背景和技术细节,还包含了完整的代码实现和可视化工具,因此在学习过程中,建议读者结合代码逐步实践,并通过调整超参数和实验不同的数据集来加深对LSSVM的理解。同时,注意数据预处理和特征提取的重要性,这对模型性能有着关键影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值