
湖南科技大学图形图像(王志喜)期末复习必备往年高频考点确保八十分以上
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本资料为湖南科技大学图形图像课程精心整理的期末复习材料,涵盖历年高频考点,助你轻松掌握核心知识,冲刺考试高分。
### 图形图像期末复习知识点详解
#### DDA算法与中点算法
1. **DDA算法**:直接数字式算法(Digital Differential Analyzer)是一种通过计算斜率并逐步累加来确定像素位置的方法。例如,对于线段端点为(20, 20)和(28, 26),首先计算斜率为\( m = \frac{y_2 - y_1}{x_2 - x_1} = \frac{6}{8} = 0.75 \)。然后从起点出发,每次增加一个单位的 \( x \) 值和相应的 \( y \) 值。
示例代码:
```python
def draw_line_dda(x_start, y_start, x_end, y_end):
dx = abs(x_end - x_start)
dy = abs(y_end - y_start)
if (dx > dy):
steps = dx
else:
steps = dy
Xinc = float(dx / steps)
Yinc = float(dy / steps)
for i in range(0, int(steps)):
x_start += round(Xinc)
y_start += round(Yinc)
```
2. **中点算法**:该方法通过判断像素位置的中点来决定下一次绘制的位置。这种方法适用于直线和圆弧等基本图形。
#### 几何变换
1. **旋转变换矩阵**:对于旋转角为 \(\theta\),旋转中心为 \( (x_0, y_0) \),旋转变换矩阵可表示如下:
[
begin{pmatrix}
cos\theta & -sin\theta & (1-cos\theta)x_0 + sin\theta y_0
sin\theta & cos\theta & (1-cos\theta)y_0 - sin\theta x_0
0 & 0 & 1
end{pmatrix}
]
2. **缩放变换矩阵**:对于缩放系数为 \(s_x\) 和 \(s_y\),固定点位置为 \((x_0, y_0)\),缩放变换矩阵可表示如下:
[
begin{pmatrix}
s_x & 0 & (1-s_x)x_0
0 & s_y & (1-s_y)y_0
0 & 0 & 1
end{pmatrix}
]
3. **带缩放的旋转变换矩阵**:对于旋转角为 \(\theta\),缩放系数均为 \(s\),旋转中心和固定点位置均为 \((x_0, y_0)\),变换矩阵可表示如下:
[
begin{pmatrix}
scos\theta & -ssin\theta & (1-scos\theta)x_0 + ssin\theta y_0
ssin\theta & scos\theta & (1-scos\theta)y_0 - ssin\theta x_0
0 & 0 & 1
end{pmatrix}
]
4. **坐标变换矩阵**:对于新坐标系统的原点位置定义在旧坐标系统中的 \(P_0\) 处,新的 \(x\) 轴或 \(y\) 轴为 \(P_0 P_1 \),可以通过构建旋转和平移矩阵来实现。
5. **投影变换矩阵**:对于给定的投影向量和投影面的情况,可以构造相应的投影变换矩阵用于将三维坐标转换到二维平面上。
#### 图形程序设计
- 绘制基本图形(如直线、三角形等)时使用 OpenGL 或者其他图形库来实现。
示例代码:
```c++
void drawLine(float x1, float y1, float x2, float y2) {
glBegin(GL_LINES);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
}
void drawTriangle() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.5, 0.0, 0.5); // 设置颜色为紫色
glBegin(GL_TRIANGLES);
glVertex2f(-1.0, -1.0);
glVertex2f(1.0, -1.0);
glVertex2f(0, 1.0);
glEnd();
}
void drawRectangle() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3ub(58, 94, 76); // 设置颜色为蓝色
glBegin(GL_QUADS);
glVertex2i(-1,-1);
glVertex2f(+0.5,-1);
glVertex2f(+0.5,+0.5
全部评论 (0)


