计算机图形学期末复习笔记

news2025/7/29 12:12:44

计算机图形学

ch1绪论

1.1计算机图形学及其概念

计算机图形学(Computer Graphics)是研究怎样利用计算机来生成、处理和显示图形的原理、方法和技术的学科。

cg研究对象是图形

图形的要素

  • 几何(轮廓、点、线、面)
  • 非几何要素(色彩、纹理)

图形的表示方法

  • 参数法(图形,面向对象表示,代码生成)
  • 点阵法(图像,像素组成,扫描输入)

cg与相关学科的关系

1

1.2计算机图形学发展概况

设备

  • 随机扫描

  • 存储管式

  • 光栅扫描

官方标准

GKS PHIGS

非官方标准

DirectX Xlib Postscript OpenGL

1.3计算机图形学应用领域

虚拟现实 地理信息系统

1.4计算机图形学技术

OpenGL Web3D ACIS

ch2计算机图形系统

2.1计算机图形系统概述

计算机系统功能:计算、存储、对话、输入、输出

计算机系统包括

  • 图形硬件
  • 图形软件

图形硬件包括

  • 计算机平台
  • 图形设备(输入、输出、显示和绘制)

图形软件包括

  • 数据结构
  • 应用软件
  • 支撑软件

2.2计算机图形硬件系统

输入设备

  • 键盘
  • 鼠标
  • 光笔
  • 触摸屏
  • 触摸板
  • 操纵杆
  • 跟踪球
  • 空间球
  • 数字化仪
  • 扫描仪

输出设备

  • CRT
  • 随机扫描显示器(顺序扫描)
  • 光栅扫描显示器(随机扫描)

阴极射线管(CRT)显示器原理

电子枪发射电子束,经过聚焦系统、加速电极、偏转系统,轰击到荧光屏的不同部位,被其内表面的荧光物质吸收,发光产生可见的光点。即发射、聚焦、加速、偏转、显示

CRT分辨率

CRT在水平或竖直方向单位长度上能识别的最大光点个数(物理分辨率)

刷新频率

每秒的重绘次数

点距

光点的距离

光栅扫描

电子束依照固定的扫描线和规定的扫描顺序进行扫描。

双缓存技术

一个缓存用来刷新的同时,另一个写入数据信息,尔后这两个缓存可互换角色。这种方式称为双缓存

帧缓存作用

存储屏幕像素的颜色信息

帧缓存保存像素信息的方式

  • 像素颜色值
  • 像素颜色在查色表的索引值

位面技术

显存分成若干颜色的位平面(bit plane)。每像素一位的帧缓存称为位图(bitmap)

颜色查找表

帧缓存保存颜色的索引,而不是颜色本身

2.3计算机图形软件系统

计算机图形接口标准

CGI

计算机图形文件元标准

CGM SVG

图形核心系统标准

GKS PHIGS GL

交互式图形系统标准

STEP IGES

ch3二维图形生成算法

3.1直线

哪个方向平把哪个作为自变量,下面都假设0°<=arctan(Δy/Δx)<=45°,注意三种方法在自变量改变时,增量也会对称改变

DDL

因变量变化量=Δy/Δx(向下取整)

中点画线

通过判断备选点中点带入一般式方程后的正负取点,为了不用小数计算,算式都乘2

设d(x,y)=ax+bx+c

Δ0=d(x+1,y+0.5)-d(x,y)=2a+b

Δk>0 选(x+1,y) Δ(k+1)=Δk+2a

Δk<=0 选(x+1,y+1) Δ(k+1)=Δk+2(a+b)

Bresenham

通过判断准确点带入一般式方程后与备选点坐标的对比取点(Δy/Δx与1/2的比较),为了不用小数计算,算式都乘2Δx

Δ0=((f(x+1)-y)-1/2)**2Δx=(Δy/Δx-1/2)*2Δx=2Δy-Δx

Δk>0 选(x+1,y+1) Δ(k+1)=Δk+2Δy-2Δx

Δk<=0 选(x+1,y) Δ(k+1)=Δk+2Δy

有点像中点和实际点比赛,谁赢了下次就多给点,但因为始终往前走所以2Δy必须存在

3.2圆

由圆的对称性知,只需画出八分圆就可以画出其他部分

数值微分

中点画圆

在这里插入图片描述

使用顺时针第一部分作图,用一般式作为判断

Δ0=1-r

Δk>0 圆外,选(x+1,y-1) Δ(k+1)=Δk+2(xk-yk)+5

Δk<=0 圆内,选(x+1,y) Δ(k+1)=Δk+2xk+3

Bresenham

在这里插入图片描述

Δ0=2(1-r)

求H和D哪个近就行

δHD=mH-mD=2(Δk+yk)-1

δHD<=0 选H Δk+1k+2xk+1+1

δHD>0 选D Δk+1k+2(xk+1-yk+1+1)

3.3区域填充

区域表示类型

  • 顶点
  • 点阵
  • 内点
  • 边界

扫描线填充

  1. 计算交点(极小值记2个,极大值记0个,否则记1个)
  2. 交点排序
  3. 交点配对
  4. 区间填色

有序边表填充

  1. 数据准备
    1. 求交建立边表(ymax x dx)
  2. 扫描转换(活性边表)
    1. 更新
    2. 删除
    3. 插入
    4. 绘制

种子填充

  • 四连通(边界是八连通)

  • 八连通(边界是四连通)

    方法

    1. 种子入栈
    2. 栈非空时重复
      1. 出栈
      2. 填色
      3. 按连通方法入栈周围像素,若栈不空,跳至2.1继续

扫描线种子填充

  1. 入栈
  2. 栈非空时重复
    1. 出栈
    2. 左右延伸填充至xleft和xright
    3. 上下找未填充区间,把每个区间最右像素入栈,若栈不空,跳至2.1继续

3.4字符处理

  • 点阵

    字符定义为位图矩阵

  • 矢量

3.5属性处理

1.线宽

  • 刷子绘制
    • 线刷子(有缺口)
    • 方刷子(线宽与斜率有关)
  • 实区域填充

2.线型

位屏蔽器

3.颜色

3.6反走样

例子

  • 阶梯走样
  • 细节遗失与失真
  • 运动图形闪烁

解决

  • 硬件:采用高分辨率的光栅扫描
  • 软件:高分辨率计算,低分辨率显示

ch4图形的表示与建模

4.1规则形体的基本概念

基本图形元素

  • 线-
    面-


图形对象的描述

  • 图形信息
    • 几何信息
    • 拓扑信息(9种关系)
  • 非图形信息

4.2三维形体的存储模型

  • 线框模型
  • 表面模型
  • 实体模型

4.3三维实体的表示方法

  • 分解表示

    • 空间位置枚举
    • 八叉树
    • 单元分解
  • 构造表示

    • 扫描表示
    • 构造实体几何表示(CSG)
    • 特征表示
  • 边界表示

    • 半边
    • 翼边
    • 辐射边

表示的评判指标

  • 精确性
  • 封闭性
  • 有效性
  • 简洁性

4.4非规则几何形体的表示

  • 分形几何
  • 粒子系统
  • 形状语法

ch5交互式绘图技术

5.1交互式绘图系统概述

软件层次

  • 应用程序
  • 应用模型
  • 图形系统

硬件层次

  • 交互设备

图形系统的作用

应用程序和显示硬件之间的中介,起着将应用模型中定义的对象转化为模型视图的输出变换作用

输入模式

  • 请求
  • 采样
  • 事件

5.2交互式绘图系统的输入处理

5.3交互式绘图的交互技术

  • 构图
  • 拾取
  • 菜单
  • 反馈

5.4交互式绘图系统的构造

ch6图形几何变换

6.1图形变换的数学基础

齐次坐标

n维坐标用n+1维表示

规范化齐次坐标

在这里插入图片描述

好处

为坐标系变换提供了有效方法

可以表示无穷远点(h=0)

6.2二维基本变换

平移

比例

旋转

对称

错切

仿射(前五种的任意组合)

复合变换

6.3三维基本变换

需要注意的

旋转

错切

对称

逆变换(即变回去)

绕任意轴的旋转,先将轴移至与Z轴重合

ch7图形观察显示

7.1二维图形观察

7.2二维图形裁剪

直线段裁剪

1.编码裁剪算法

在这里插入图片描述

都是0

都在内部全部保留

相乘不为0

都在外部,全部舍弃

不都是0且相乘为0

边裁边判断

2.中点分割算法

3.liang-Barskey算法

多边形裁剪

Sutherland-Hodgman逐边裁剪

在这里插入图片描述

在这里插入图片描述

ch9真实感图形绘制

常见坐标系

场景世界坐标系(右手)

场景局部坐标系(右手)

观察坐标系(左手)

设备坐标系

取景变换(视向变换)

场景坐标系->观察坐标系

物体的消隐

在给定视点和视线方向后,决定场景中哪些物体的表面是可见的,哪些是被遮挡不可见的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前向传播与反向传播参数的更新方式(略高于高中数学水平)(附公式、代码)

前向传播与反向传播意义及其参数的更新方式 文章目录前向传播与反向传播意义及其参数的更新方式一、前言二、前反向传播的作用三、前向传播四、反向传播代码一、前言 因为本身非科班出身&#xff0c;数学又学的很差&#xff0c;一直都是傻瓜式地用tensorflow和pytorch搭网络。…

【容器】学习docker容器网络

在前面讲解容器基础时&#xff0c;曾经提到过一个 Linux 容器能看见的“网络栈”&#xff0c;实际上是被隔离在它自己的 Network Namespace 当中的。 而所谓“网络栈”&#xff0c;就包括了&#xff1a;网卡&#xff08;Network Interface&#xff09;、回环设备&#xff08;L…

Mac mini 外接移动硬盘无法写入或者无法显示的解决方法

文章目录1. 背景2. 让NTFS格式的移动硬盘正常读写方法3. 打开“启动安全性实用工具”4. 更改“安全启动”设置1. 背景 刚买mac min&#xff08;2023年2月3日&#xff09;不久&#xff0c;发现macOS的玩起来并不容易&#xff0c;勇习惯了windows系统的习惯&#xff0c;感觉 mac…

【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(二)

storybook回顾继续说说用法配置文件介绍回顾 上篇博客地址&#xff1a; https://blog.csdn.net/tuzi007a/article/details/129192502说了部分用法。 继续说说用法 配置文件介绍 开发环境的配置都在.storybook目录中&#xff0c;里面包含了2个文件 main.js preview.js先看m…

STM32 触摸屏移植GUI控制控件

目录 1、emWin 支持指针输入设备。 2、 模拟触摸屏驱动 3、实现触摸屏的流程 3.1 实现硬件函数 3.2 实现对GUI_TOUCH_Exec()的定期调用 3.3 使用上一步确定的值&#xff0c;在初始化函数LCD_X_Config&#xff08;&#xff09;当中添加对GUI_TOUCH_Calibrate()的调用 4、…

Kubernetes入门教程 --- 使用二进制安装

Kubernetes入门教程 --- 使用二进制安装1. Introduction1.1 架构图1.2 关键字介绍1.3 简述2. 使用Kubeadm Install2.1 申请三个虚拟环境2.2 准备安装环境2.3 配置yum源2.4 安装Docker2.4.1 配置docker加速器并修改成k8s驱动2.5 时间同步2.6 安装组件3. 基础知识3.1 Pod3.2 控制…

【一些回忆】2022.02.26-2023.02.26 一个普通男孩蜕变的365天

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f91e; 作者&#xff1a;那就叫我亮亮叭 &#x1f4d5; 专栏&#xff1a;一些回忆 为什么选择在这个时间节点回忆一下呢&#xff1f; 一是因为今天距离2023高考仅剩1…

双指针法应用总结

一、双指针法&#xff08;一&#xff09;概况1.类型&#xff1a;快慢指针&#xff08;相同方向循环&#xff09;、对撞指针&#xff08;相反方向循环&#xff09;、滑动窗口2.用途&#xff1a;提高效率&#xff0c;通常能将将O(n^2)的时间复杂度&#xff0c;降为O(n)3.可应用的…

selenium基本操作

爬虫与反爬虫之间的斗争爬虫&#xff1a;对某个网站数据或图片感兴趣&#xff0c;开始抓取网站信息&#xff1b;网站&#xff1a;请求次数频繁&#xff0c;并且访问ip固定&#xff0c;user_agent也是python&#xff0c;开始限制访问&#xff1b;爬虫&#xff1a;通过设置user_a…

数据库浅谈之 DuckDB AGG 底层实现

数据库浅谈之 DuckDB AGG 底层实现 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是数据库浅谈系列&#xff0c;收录在专栏 DATABASE 中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些数据库领域相关的知…

离线维基百科阅读器Kiwix Serve

本文软件是网友 刘源 推荐的&#xff0c;因为他已经安装成功了&#xff0c;所以老苏拖拖拉拉的就从去年拖到了现在&#xff1b; &#x1f602; 什么是 Kiwix ? Kiwix 是一个用于浏览离线内容的自由开源浏览器&#xff0c;最初用于离线浏览维基百科。Kiwix 可以读取以压缩形式存…

[神经网络]基干网络之VGG、ShuffleNet

一、VGG VGG是传统神经网络堆叠能达到的极限深度。 VGG分为VGG16和VGG19&#xff0c;其均有以下特点&#xff1a; ①按2x2的Pooling层&#xff0c;网络可以分成若干段 ②每段之内由若干same卷积操作构成&#xff0c;段内Feature Map数量固定不变&#xff1b; ③Feature Map按2的…

对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)

目录 一、总述 二、登录页面测试 一些准备工作 验证页面显示是否正确 验证正常登录的情况 该过程中出现的问题 验证登录失败的情况 关于登录界面的总代码 测试视频 三、注册界面的自动化测试 测试代码 过程中出现的bug 测试视频 四、博客列表页测试&#xff08;…

【Leedcode】数据结构中链表必备的面试题(第四期)

【Leedcode】数据结构中链表必备的面试题&#xff08;第四期&#xff09; 文章目录【Leedcode】数据结构中链表必备的面试题&#xff08;第四期&#xff09;1.题目2.思路图解(1)思路一(2)思路二3.源代码总结1.题目 相交链表&#xff1a; 如下&#xff08;示例&#xff09;&…

小白福利!我开发了一个快速部署库

1、开发背景 很多入门的同学&#xff0c;在跟着视频敲完代码之后&#xff0c;在打包出来的产物犯了难 如果是 hash 路由&#xff0c;要么使用后端部署&#xff0c;要么使用 github 或者 gitee 提供的静态部署服务如果是 history 路由&#xff0c;那只能使用后端框架进行部署&a…

内网渗透(五十三)之域控安全和跨域攻击-利用域信任密钥获取目标域控

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

前端学习日记——Vue之Vuex初识(一)

前言 学习前端一段时间了&#xff0c;因为一直是做Python开发&#xff0c;所以凭借着语言的通性学习Javascript、Vue轻快很多&#xff0c;但一些碎片化的知识及插件的使用方法还是需要记录一下&#xff0c;时而复习&#xff0c;形成系统化的知识体系&#xff08;PS&#xff1a;…

【Linux线程池】

Linux线程池Linux线程池线程池的概念线程池的优点线程池的应用场景线程池的实现Linux线程池 线程池的概念 线程池是一种线程使用模式。 线程过多会带来调度开销&#xff0c;进而影响缓存局部和整体性能&#xff0c;而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并…

JavaScript if…else 语句

条件语句用于基于不同的条件来执行不同的动作。条件语句通常在写代码时&#xff0c;您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。在 JavaScript 中&#xff0c;我们可使用以下条件语句&#xff1a;if 语句 - 只有当指定条件为 true 时&a…

【企业云端全栈开发实践-3】Spring Boot文件上传服务+拦截器

本节目录一、静态资源访问二、文件上传原理三、拦截器3.1 拦截器定义代码3.2 拦截器注册一、静态资源访问 使用IDEA创建Spring Boot项目时&#xff0c;会默认创建classpath://static/目录&#xff0c;静态资源一般放在这个目录下即可。 如果默认的静态资源过滤策略不能满足开…