计算机图形学期末复习

第一章 绪论

计算机图形学定义:计算机图形学是研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理、方法和技术

第二章 计算机设备及硬件系统

知识点

阴极射线管(CRT)

光栅扫描图形显示器:垂直回扫、水平回扫

液晶显示器:

工作原理:利用液晶的光电显示效应,通过施加电压改变液晶的光学特性,从而造成对入射光的调制,使通过液晶的透射光或反射光受所加电压的控制,达到显示的目的。

(通过对液晶电场的控制可以实现光线的明暗变化,从而达到信息显示的目的)

光栅扫描图形显示子系统的结构(p35)

重要部件:帧缓冲存储器、显示控制器

帧缓冲存储器(显存):存储像素的颜色(灰度)的存储器,可由显示控制器直接访问

显示控制器:依据设定的显示工作方式,读取显存里的数据,并转换成三原色并配以同步信号给显示器

注意事项

液晶显示器的亮度没有CRT的高

扫描转换过程:像素信息从应用程序转化并放入帧缓冲区的过程

第四章 图形的表示与数据结构

基本元素:

定义:指可以用一定的几何参数和属性参数描述的最基本的图形元素

组成:点、线、面、环、体等

几何信息与拓扑信息:

几何信息:一般指形体在欧氏空间的位置和大小

拓扑信息:形体各分量(点、线、面)的数目及相互间的连接关系(9中拓扑关系)

第五章 基本图形生成算法

直线扫描转换:

数值微分法(DDA)

中点Bresenham算法

Bresenham算法

判别式

有,取中点,判别d

有,判别误差e

取舍

四舍五入,有误差

不做四舍五入

不作除法、无四舍五入

多边形的扫描转换/多边形填充:

定义:从多边形顶点表示到点阵表示

x扫描线算法:左闭右开的原则

改进的有效边表算法(y连贯性算法):

边缘填充算法

区域填充算法

反走样:

走样(图形失真):离散量表示连续量而引起的失真

反走样(图形保真技术):用于减少或消除走样的现象的技术

造成走样的原因:直线段或曲线段的数学描述是连续的,而光栅显示器上显示的直线段或曲线段是由一些离散的、面积不为0的像素点组成的

避免走样的方法:

过取样(后滤波):在高于显示分辨率的较高分辨率下用点取样方法计算,然后对几个像素的属性进行平均,得到较低分辨率下的像素属性

区域取样(前滤波):根据图形对象在每个像素点上的覆盖率来确定像素点的亮度,这种计算覆盖率的方法

第六章 二维变换级二维观察

二维变换

基本几何变换都是相对于坐标原点和坐标轴进行的

裁剪

直线段裁剪:编码裁剪、中点分割裁剪、梁友栋算法

多边形裁剪:

第七章 三维变换及三维观察

三维变换

注意:三维变换中,绕y轴的旋转变换的特殊

三维观察

(规定以逆时针旋转方向为正向;三视图:以Z轴正向朝上)

平面几何投影:

透视投影:投影中心到投影面的距离有限

平行投影:投影中心到投影面的距离无限

正投影:三视图、正轴侧投影(对任意平面做投影)

斜投影:投影方向不垂直于投影面;投影方向和投影面成45°

投影在x0y平面

正轴测投影变换矩阵:

斜轴测投影变换矩阵:

α=45°,β=30°或者45°

透视投影

投影矩阵:(中间的为透视变换矩阵)

主灭点:坐标轴方向的平行线在投影面上形成的灭点

根据主灭点个数分为:一点透视、二点透视、三点透视

观察坐标系:

OpenGL中的变换

OpenGL视点变换函数:OpenGL视点变换函数用于确定观察参考坐标系,即确定视点的位置和观察方向,默认情况视点位于原点,观察方向为Z轴负向。

void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz,GLdouble upx, GLdouble upy, GLdouble upz);

OpenGL投影函数:

平行投影:

透视投影:

第八章 曲线与曲面

样条曲线中的边界条件:自由端、夹持端、抛物端

样条曲线:

定义:指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续条件

hermite插值样条:

可以局部调整,因为每个曲线段仅依赖于端点约束

当曲线的端点及端点的切线方向确定时,若给定不同的切线长度,将有不同形状的Hermite曲线。

Bezier曲线/曲面:

是一个阶数比控制点少一的多项式

只有第一个点和最后一个点在曲线上

不能对曲线形状进行局部控制,任意改变一控制点,整条曲线受影响

Bezier曲线的性质:

端点:曲线总是通过起点和终点

一阶导数:起点的切线位于前两个控制点的连线上,终点的切线位于最后两个的连线上

二阶导数:曲线在起始点和终止点处的r阶导数由起点或终止点和它们的r个相邻的控制点决定

对称性

凸包性:

几何不变性:曲线形状只与控制多边形各顶点的相对位置有关,与坐标系的选择无关

变差减少性:曲线比控制多边形更加光滑

控制顶点变化对曲线形状的影响

B样条曲线/曲面:

性质:

第九、十章 消隐、真实感图形绘制

消隐

物体空间的消隐算法:是将物体表面上的k个多边形中的每一个面与其余的k-1个面进行比较,精确地求出物体上每条棱边或每个面的遮挡关系(多边形的区域排序算法)

图像空间的消隐算法:对屏幕的每一像素进行判断,以决定物体上哪个多边形在该像素点上是可见的(如深度缓存算法)

简单光照模型

入射光=反射光+透射光+散射光+吸收光

简单光反射模型=漫反射光+环境光+镜面反射光

环境光:是光在物体和周围环境之间多次反射的结果,即是来自周围的环境对光的反射。环境光的特点是:它不是直接自光源,而是照射在物体上的光来自周围各个方向,且又均匀地向各个方向反射

Ie=Ia·Ka

漫反射光:漫反射光是在光的照射下,物体表面发射的反射光均匀地射向各个方向

Id=Ip·Kd·cos(a)

镜面反射光:镜面反射是点光源照射在一个与物体光泽的表面(如镜子、光亮的金属等)有关的反射光。它的特点是光源来自一个光方向,并沿某特定方向(反射方向)离开

OpenGL绘制函数:

OpenGL消隐处理:

OpenGL光照与材质:

OpenGL纹理贴图:

程序设计

编码裁剪

//编码定义

char clipCode(const GPoint2d &pt, const GRect2d &rc)

{

char code = 0;

if(pt.y() > rc.y1()) code |= 0x01;

else if(pt.y() < rc.y0()) code |= 0x02;

if(pt.x() > rc.x1()) code |= 0x04;

else if(pt.x() < rc.x0()) code |= 0x08;

return code;

}

//裁剪

bool gltLineClip2d(GPoint2d &pt0, GPoint2d &pt1, const GRect2d &rc)

{

char c0, c1;

while(true)

{

c0 = clipCode(pt0, rc);

c1 = clipCode(pt1, rc);

if((c0 & c1) != 0) return false;//按位与,两点在同一个测

if(c0 == 0 && c1 == 0) return true;//两点在窗口内

if(c0 == 0)

{

swap(pt0, pt1);

swap(c0, c1);

}

if(c0 & 0x01) // 在 Yt 之上

{

pt0.setX(pt0.x()-(pt0.y()-rc.y1())*(pt0.x()-pt1.x())/(pt0.y()-pt1.y()));

pt0.setY(rc.y1());

}

else if(c0 & 0x02) // 在 Yb 之下

{

pt0.setX(pt0.x()-(pt0.y()-rc.y0())*(pt0.x()-pt1.x())/(pt0.y()-pt1.y()));

pt0.setY(rc.y0());

}

else if(c0 & 0x04) // 在 Xr 之右

{

pt0.setY(pt0.y()-(pt0.x()-rc.x1())*(pt0.y()-pt1.y())/(pt0.x()-pt1.x()));

pt0.setX(rc.x1());

}

else if(c0 & 0x08) // 在 Xl 之左

{

pt0.setY(pt0.y()-(pt0.x()-rc.x0())*(pt0.y()-pt1.y())/(pt0.x()-pt1.x()));

pt0.setX(rc.x0());

}

}

}

Bezier曲线

//bezier的Castel推分算法

double bezierCastel(double x[],int n,double t){

for(int r=1;r

for(int i=0;i

x[i] = (1-t)*x[i]+t*x[i+1];

}

}

return x[0];

}

void gltBezier2d(const GPoint2dArray &points){

if(points.count<2)

return;

double x0,y0,x1,y1;

double t,dt;

GPoint2d pt;

int n = points.count();

dt = 1.0f/(n*20);

double *x = new double[n];

double *y = new double[n];

pt = points.at(0);

x0 = pt.x();

y0 = pt.y();

for(int i = 0;i

pt = points.at(i);

x[i] = pt.x();

y[i] = pt.y();

}

for(t=dt;t<1;t+=dt){

x1 = bezierCastel(x,n,t);

y1 = bezierCastel(y,n,t);

gltLine2d(x0,y0,x1,y1);

x0 = x1;

y0 = y1;

}

pt = points.at(n-1);

gltLine2d(x0,y0,pt.x().pt.y());

delete []x;

delete []y;

}

B样条曲线

//b样条基函数

void cubicBSplineBase(int begin,const GPoint2dArray &points,double t,GPoint &pt){

float fh1 = (-t*t*t+3*t*t-3*t+1)/6;

float fh2 = (3*t*t*t-6*t*t+4)/6;

float fh3 = (-3*t*t*t+3*t*t+3*t+1)/6;

float fh4 = (t*t*t)/6;

GPoint pt0 = points.at(begin);

GPoint pt1 = points.at(begin+1);

GPoint pt2 = points.at(begin+2);

Gpoint pt3 = points.at(begin+3);

pt.setX(fh1 * pt0.x() + fh2 * pt1.x() +fh3 * pt2.x() + fh4 * pt3.x());

pt.setY(fh1 * pt0.y() + fh2 * pt1.y() +fh3 * pt2.y() + fh4 * pt3.y());

}

void gltBSpline2d(const GPoint2dArray &points){

if(points.count()<4)

return ;

double x0,y0;

double t,dt;

GPoint pt;

int n = points.count();

dt = 0.05;

for(int i=0;i

cubicBSplineBase(i,points,0,pt);

x0 = pt.x();

y0 = pt.y();

for(t=dt;t<1;t+=dt){

cubicBsplineBase(i,points,t,pt);

gltLine2d(x0,y0,pt.x(),pt.y());

x0 = pt.x();

y0 = pt.y();

}

cubicBSplineBase(i,points,t,pt);

gltLine2d(x0,y0,pt.x(),pt.y());

}

}

标签:计算机,曲线,图形学,算法,rc,c0,pt1,pt0

来源: https://www.cnblogs.com/Christal-pyy/p/14099418.html

计算机图形学透视投影知识点,计算机图形学相关推荐

  1. 计算机的发展知识点,计算机一级MsOffice考试知识点:计算机的发展

    MsOffic常用组件有Word.Excel.Powerpoint等.本文特意为大家收集整理了计算机一级MsOffice考试知识点:计算机的发展,一起看看吧! 1.1计算机的发展 一.计算机发展 1. ...

  2. 计算机组成原理主存储器知识点,计算机组成原理(存储器).ppt

    计算机组成原理(存储器).ppt 计算机组成原理,主讲颜俊华 存储子系统,存储子系统,主要知识点 掌握存储器的分类.存储系统的层次结构 掌握存储单元.存储容量.地址线.数据线的关系3. 掌握用半导体存 ...

  3. 计算机四级软件工程知识点,计算机四级考试题库及搜题软件,送一份备考指南给大家!...

    原标题:计算机四级考试题库及搜题软件,送一份备考指南给大家! 大家都知道,英语与计算机考试都是我们读书生涯中很常见的考试.其计算机四级考试就是全国计算机等级水平考试中的一中. 计算机四级是针对计算机的 ...

  4. 计算机操作员五级知识点,计算机操作员五级.doc

    计算机操作员五级 上海市计算机操作员(五级)鉴定环境模拟盘答题指导 一.说明 为了广大考生能够很好的适应考试环境,在大家平时训练的基础上,可以在上海市劳动和社会保障局/wsbs/zypxjd/jnjd ...

  5. 计算机运算器存储器知识点,计算机一级知识点:运算器、控制器

    计算机一级知识点:运算器.控制器 一级主要考核微型计算机基础知识和使用办公软件及因特网(Internet)的基本技能.一级主要考核微型计算机基础知识和使用办公软件及因特网(Internet)的基本技能 ...

  6. 计算机绘图自考知识点,计算机绘图(电子AD)自考大纲-08年9月.doc

    计算机绘图(电子AD)自考大纲-08年9月,计算机绘图自考,小学生计算机绘图作品,计算机绘图,机械制图与计算机绘图,计算机绘图基础教程,计算机绘图基础,计算机绘图师,计算机绘图特点,计算机绘图1100 ...

  7. 职高计算机选修6知识点,(计算机基础考试7.doc

    试卷编号:9619 所属语言:计算机基础 试卷方案:WINhy 试卷总分:100分 共有题型:4种 一.单选 共40题 (共计40分) 第1题 (1.0分) 题号:5923 难度:中 第81章 一个六 ...

  8. 大一计算机理论考试知识点,计算机一级考试理论知识点整理.doc

    计算机一级考试理论知识点整理.doc 还剩 62页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 个人整理 仅供 ...

  9. WPS计算机一级考试知识点,计算机一级考试WPS练习题及答案

    计算机一级考试WPS练习题及答案 为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是小编搜索整理的计算机一级考试WPS试题及答案,供参考练习,预祝考生们考出自己理想的成绩! 计算机一级 ...

最新文章

  1. fedora 15怎么修改运行级别?
  2. 2015陕西 并查集
  3. PyTorch:损失函数loss function
  4. python中for语法
  5. java获取某年度有多少周_java获取一年共有多少周
  6. 一个将Google Maps API与ArcGIS JavaScript API for GMaps结合的例子
  7. vbox虚拟机添加硬盘
  8. Python爬虫,30秒爬取500+篇微信文章!太强啦!
  9. VC投资的世界里,熵减的结果就是共识的形成
  10. bootstrap 查询条件布局
  11. pgr_createTopology
  12. python-docx表格两次输入换行_Python Docx回车
  13. K8S Calico网络插件之IPIP模式
  14. Ansible配置文件ansible.cfg详解
  15. 360面试总结(Android),高级安卓面试题2020
  16. RKE2部署高可用Rancher v2.7.1
  17. UPS电源的作用和使用方法
  18. 使用proteus仿真51单片机来实现十字路口红绿灯
  19. C语言 记忆测试(Memory Test)小游戏的实现
  20. 算法小课堂(一)暴力枚举

热门文章

  1. pythonstdin_Windows上Python读取stdin出错
  2. 爱因斯坦广义相对论:引力是时空的曲率
  3. Android音视频开发之ExoPlayer(一):快速入门ExoPlayer
  4. DOS命令之诊断网络
  5. 读书笔记--认知突围
  6. 【经典游戏系列】回忆杀?扒一扒那些年我们玩过的打地鼠小游戏。
  7. 联通校园网避免检测随身wifi方法
  8. DolphinDB Database丨交易回测系列一:技术信号回测
  9. spring boot跳过maven test
  10. MBR分区,GPT分区,EFI分区,MSR分区是什么?各有什么用处?