热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图形学之开篇概念及综述

一、什么是计算机图形学计算机图形学就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
一、什么是计算机图形学
        计算机图形学就是研究如何在计算机中表示图形、以及利用
计算机进行图形的计算、处理和显示的相关原理与算法。

1、研究内容
         如何在计算机中表示图形、以及利用计算机进行 图形的计算、处理和显示的相关原理与算法,构 成了计算机图形学的主要研究内容 。

2、传统的计算机图形学生成一副物体图形,常见步骤:

  • 造型技术 :  即生成物体的模型,物体的几何数据和拓扑关系 。
  • 光照模型 :  用一些简单的数学模型来近似、代替那些物理学的模型,为模拟物体表面的光照物理现象的数学模型叫光照模型。
  • 绘制(渲染)技术 : 选择适当的绘制算法来把这个场景画(渲染) 出来。就是将模型真实性(或艺术性)的显示在屏幕上,即决定每个像素该是什么颜色。这很大程度上取决于不同光照模型。

3、由于计算机屏幕由像素生成,而现阶段的屏幕显示器大多是光栅显示器,故就需要有一套针对光栅显示器生成图形的算法 。大致可分为如下:
                  

二、图形显示设备

1、图形显示器常用的硬件设备  -  - >  阴极射线管( CRT ) 最原始的

  • 阴极射线管的技术指标主要两条:一是分辨率,二是显示速度 。
  • 一个阴极射线管在水平和垂直方向单位长度上能识别出的最大光点数称之为分辨率。光点亦称之为像素(p i x e l),它主要由电子枪、偏转系统、荧光屏构成(如下)。

  • 阴 极:当它被加热时发射电子
  • 控制栅:控制电子束偏转的方向和运动速度
  • 加速极:用于产生高速的电子束
  • 聚焦极:保证电子束在轰击屏幕时能汇成很细的点
  • 偏转系统:控制电子束在屏幕上的运动轨迹
  • 荧 光 屏:当它被电子轰击时发出亮光

2 、 阴极射线管的工作原理

        高速的电子束由电子枪发出,经过聚焦系统、加速系统和 磁偏转系统就会到达荧光屏的特定位置。屏幕上的那一点 就会亮了。要保持显示一幅稳定的画面,必须不断地发射 电子束。

3、 电子束的发出以及控制电子强弱原理
        
  • 电子枪是由一个加热器,一个金属阴极和一个电平控制器组成。当加热器加到一定高温时,金属阴极的电子就会摆脱能垒的束缚,迸射出去。
  • 发射出来的电子是分散的,经过一个聚焦系统,使众多的电子聚集于一点,在经过偏转系统,冲击屏幕上的一点发光。故要保持荧光屏上有稳定的图象就必须不断地发射电子束。刷新一次指电子束从上到下将荧光屏扫描一次 。其扫描图示如下:
                                           
一般必须有85Hz以上的刷新频率,人眼才能感觉到舒适。

4、 实际应用到射线管 - - > 彩色阴极射线管

     彩色CRT显示器的荧光屏上涂有三种荧光物质,它们分别能 绿 三种颜色的光。 任何颜色都是由这三种荧光粉发出的色光相混而得。其主要 结构 :三支电子枪、荫罩板、三色荧光粉

                       
三束电子经过荫罩的选择, 分别到达三个荧光点的位置 。通过控制三个电子束的强 弱就能控制屏幕上点的颜色 。
                                                        

5、主流的CRT图形显示器
    
    主流有 随机 扫描显示和 光栅 扫描显示器。

1、随机扫描的图形显示器
     
        在随机扫描(Random Scan)的图形显示器中,电子束的 定位和偏转具有随机性,即电子束的扫描轨迹随显示内容 而变化,只在需要的地方扫描,而不必全屏扫描,因此速 度快,图像清晰。 随机扫描显示器是一条线一条线地画图,因此也称为向量 (Vector)显示器。
原理: 从显示文件存储器中取出画线指令或显示字符指令,送到 显示控制器,由显示控制器控制电子束的偏转,轰击荧光 屏上的荧光材料,从而出现一条发亮的图形轨迹 由于随机扫描系统是 为画线应用设计 的,因此不能显示逼 真的有阴影场景。故主流是光栅扫描显示器 。

2、光栅扫描显示器

        光栅扫描图形显示器是 画点设备 。它不能直接从一个可编地 址的像素画一条直线到另一个可编地址的像素,只可能用尽 可能靠近这条直线路径的像素点来近似地表示这条直线 在光栅扫描系统中,电子束横向扫描屏幕,一次一行,从顶 到底顺次进行。当电子束横向沿每一行移动时,电子束的强 度不断变化来建立亮点的图案。 被显示的线段、字符、图形及其背景色都按像素一一存储在 帧缓冲存储器 Frame Buffer )中,简称 显存。
        它是屏幕所显示画面的一个直接映象,又称为位图(Bit Map) 或光栅。帧缓存的每一存储单元对应屏幕上的一个 像素 ,整 个帧缓存对应一帧图像。 由于光栅扫描系统具有存储每一个屏幕点亮 度信息的能力,所以,最合适显示浓淡和色 彩图形。
                              

三、帧缓冲器与屏幕像素

1、综述
         光栅扫描的 帧缓冲器 对屏幕每一点都有存储强度/颜色信息 的能力。在计算机屏幕上画一幅图形,需要算每个像素的 RGB值,在帧缓存写RGB等价于在屏幕上画颜色 。
         显示器分辨率表示的是在屏幕上扫描一行共有多少个点, 共有多少行扫描线, 帧缓冲器每一个存储单元的位长决定了一幅画面上能同时 显示的不同灰度的数目或颜色的种类。如下所示:
  • 单色,每个像素1Bit
  • 16色,每个像素4Bit(2^4=16)
  • 256色,每个需要1个字节(8位,2^8=256)
  • 65536(64K)色,每个像素2个字节(16位,216=64K )
  • 16777216(16.7M)色,每个需要3个字节(24位,2^24= 16.7M )表示(即24位真彩色)

2、几个常见概念
  • 光点:指电子束打在显示器荧光屏上,显示器能够显示的最小的发光点,一般用直径表明其大小。
  • 象素点:是指图形显示在屏幕上时候,按当前的图形显示分辨率所能提供的最小元素点。
  • 图形显示中分辨率有三种,即屏幕分辨率 显示分辨率显卡分辨率
    • 屏幕分辨率:屏幕上显示的像素个数,以(水平像素数*垂直像素数)表示。
    • 显示分辨率 :计算机显示控制器所能够提供的显示模式分辨率,简称显示模式 。对于文本显示方式,显示分辨率用水平和垂直方向上所能显示的字符总数的乘积来表示 。
    • 显卡分辨率就是表示显卡输出给显示器,并能在显示器上描绘像素点的数量。
  • 点距:是指相邻像素点之间的距离。两点之间的距离越小越好。

四、 图形图像的区别及存储格式

1、 图形(像)的构成属性
        
  • 简要分为分为几何属性和非几何属性。
    • 几何属性:刻画对象的轮廓、形状,也称几何要素。包括点、线、面、体等。当以几何属性具有突出作用的图形,便是基于线条信息表示:如工程图、等高线地图、曲面的线框图等。
    • 非几何属性:视觉属性,刻画对象的颜色、材质等。比如明暗、色彩、纹理、透明性、线型、线宽。当非几何要素占比突出时,便是暗图(Shading):也就是通常所说的真实感图形。
2、位图与矢量图的定义与区别

         计算机能以位图(bitmap)或矢量图(vector)格式显示图像。

1、位图(点阵图):  位图又叫点阵图或像素图,计算机屏幕上的图是由屏幕上 的像素构成的,每个点用二进制数据来描述其颜色与亮度 等信息。
2、矢量图 :  面向对象的图形或绘图图形,是用数学方 式描述的曲线及曲线围成的色块制作的图形。 矢量文件中的图形元素称为对象。每个对象都是一个自成 一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置 等属性。

区别:
  • 存储方式
    • 点阵文件是存储图的各个像素点的位置信息、颜色信息以及灰度信息。
    • 矢量文件是用数学方程、数学形式对图形进行描述,通常是用图形的形状参数和属性参数来表示图形
    • 一般来说,位图(点阵)文件存储空间比矢量文件大

                  
  • 缩放的区别
    • 位图(点阵图 )是与分辨率有关的,即在一定面积的图像上包含有固定数量的像素
    • 矢量图形与分辨率无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度
  • 存储格式的区别

 
  • 小结
    • 位图与矢量图相比更容易模仿真实感图形效果,但存储空间比矢量图大
    • 在图形缩放时,矢量图不失真,特别适用于文字设计、图案设计、版式设计、标志设计、计算机辅助设计(CAD)、工艺美术设计、插图等 。

推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
author-avatar
MK小绿_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有