什么是消隐

全称是消除隐藏面或消除隐藏线

上图中绘制不同的线条会有不同的效果
消隐主要是消除二义性 在绘制时消除被遮挡不可见的线或者面

线消隐

消隐对象是物体上的边 消除物体上不可见的边

面消隐

消隐对象是物体上的面 消除物体上不可见的面

Roberts算法

每个物体先对自身考虑 找到被遮挡的面和线(自消隐)
再将没有被消除的边与其他物体进行比较 留下最终完全可见的部分
如果物体之间有贯穿 则要确定新的显示面 显示边
但是他主要考虑的都是凸面体

光线投射算法

求光线与场景的交点 这个光线就是视线
就是将这条线接触到的像素做一个排序 在前面的像素自然就是被看到的
缺点就是需要求交点 计算量特别大

Z-Buffer消隐算法(深度缓冲器算法)

简单来说就是先在Z-Buffer缓冲器中存储最小的深度值 屏幕上每一个像素点都有一个深度值 然后再将各多边形的深度值与其投影在屏幕上像素点的深度值进行比较 如果大于则保存该深度值 则说明该多边形的这一点是可以被看到的 那么就用该点的颜色值作为屏幕上该点的像素值

缺点

占用空间太大 因为要开辟一个和屏幕分辨率一样大的数组来存储z值
没有利用图形的相关性和连续性

相较于空间问题的改进


这个改进和上面那个方法的区别主要是
1.上面那个方法是遍历每个多边形内的像素和该像素在屏幕上的该位置的像素进行比较 所以需要屏幕上每个位置都需要存储一个z值
该方法是遍历屏幕上每个像素 将该点和多边形进行比较
2.不再创建一个和屏幕分辨率一样大的数组来存储z值 而是只用一个变量来存储z值

流程

从每屏幕左上角开始逐像素的 先让该像素和每个多边形进行用该点和每个多边形的每个像素进行比较了)比较(如果不进行比较就需要) 如果在多边形内 则和多边形内该点的z值进行比较 然后如果多边形的该点的z值大于原来的z值 则计算该点的光照等作为该点的颜色

缺点

需要计算是否在多边形内

关于计算多边形上某个(x,y)的深度值

首先我们是知道多边形每个顶点的深度值 然后通过平面方程求
如 平面方程为 ax+by+cz+d=0
depth = (ai + bj+d)/c

关于计算某点与多边形是否包含

射线法


弧长法


第一张图就是0 第二张图就是2π
代数和为0就在多边形外部
代数和为2π就在多边形内部
代数和为π就在多边形边上
缺点是计算弧长不容易

弧长累加法

就是上面方法的改进 以点p为坐标轴原点建立坐标系 同一个象限认为0 跨过一个象限就为π/2 跨过两个象限就为π以此类推

区间扫描线算法


红色的就是扫描线 求出扫描线和多边形的交点 如果计算出两个区间之间的一个像素为什么颜色 则该区间的其他像素都是这个颜色了

如果区间上没有多边形则显示背景色 如a4 a5
如果区间上只有一个多边形则显示该多边形颜色 如a1 a2
如果区间上右多个多边形则需要进行深度测试 判断那个多边形课件 如a6 a7

优点

将像素计算改为逐段计算

Warnock算法(区域子分割算法)

主要是采用了分治的方法和堆栈的数据结构

过程

把物体投影到窗口上 然后进行递归分割窗口(例如分成四个小窗口) 直到窗口内目标足够简单到可以直接显示为止
如果窗口分割到只有一个像素那么大了 还有两个以上物体则此时不必再分割 只取窗口内最近的颜色或者可见面的平均颜色作为像素的值

什么是足够简单可以直接绘制





判断方法就是计算物体包围盒 然后与窗口进行比较

计算机图形学-消隐算法相关推荐

  1. GIS地图界面和计算机图形学填充算法

    一 GIS地图界面 GIS程序最常见的界面就是,不同区域被边界隔开,填充为不同的颜色: 如下三个:是超图iServer自带: 京津地区土地利用现状,京津地区人口分布,京津地区地貌分布:用于学习是很好资 ...

  2. 计算机图形学算法详解,计算机图形学裁剪算法详解

    <计算机图形学裁剪算法详解>由会员分享,可在线阅读,更多相关<计算机图形学裁剪算法详解(10页珍藏版)>请在人人文库网上搜索. 1.裁剪算法详解在使用计算机处理图形信息时,计算 ...

  3. 计算机图形学常见算法原理,计算机图形学常用算法及代码大全

    <计算机图形学常用算法及代码大全>由会员分享,可在线阅读,更多相关<计算机图形学常用算法及代码大全(41页珍藏版)>请在人人文库网上搜索. 1.2.1.1 生成直线的DDA算法 ...

  4. 计算机图形学要学什么语言,计算机图形学:算法与实现

    计算机图形学:算法与实现 语音 编辑 锁定 讨论 上传视频 <计算机图形学:算法与实现>一书的出版社是清华大学出版社,出版时间是第1版 (2012年1月1日). 书    名 计算机图形学 ...

  5. 计算机图形学+简单算法实现,《计算机图形学》课程设计-简单几何体的消隐算法实现.doc...

    PAGE PAGE 18 PAGE 18 课程名称:<计算机图形学> 论文题目:简单几何体的消隐算法实现 教学部: 年 级: 班 级: 学 号: 姓 名: 简单几何体的消隐算法实现 摘 要 ...

  6. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

  7. 计算机图形学 裁剪算法源代码,OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc...

    OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分  .<计算 ...

  8. 计算机图形学消隐的概念

    要真实显示三维物体,必须在视点确定之后,将对象表面上不可见的点.线.面消去:执行这种功能的算法称为消隐算法.根据消隐对象的不同,分为:线消隐,面消隐.     因为在计算机图形处理的过程中,不会自动消 ...

  9. 七巧板复原算法——计算机图形学基本算法之一, 点在多边形内部的判断

    注:此时我已经完成了一个演示版本,但是为了文章的渐进性,我将把开发过程一步步的写出来,用来记录. 本实验代码用到的图形学关系和算法列举如下: 基本计算机图形学关系和算法 1.点在多边形内部的 点在多边 ...

  10. 计算机图形学曲线算法代码,计算机图形学自由曲线绘制算法.doc

    计算机图形学自由曲线绘制算法 宁夏师范学院数学与计算机科学学院 <>实验报告 实验序号: 实验项目名称: 学 号姓 名专业.班实验地点指导教师时 间.实验内容与步骤 1 //TestVie ...

最新文章

  1. Linux C中的basename函数用法示例
  2. Pytorch常见的坑汇总
  3. ionic 笔记-wzq
  4. 8个概念告诉你人工智能
  5. 服务器查看gpu状态_服务器GPU使用情况查看命令详解
  6. python怎么安装pandas模块-windows下如何安装Python、pandas
  7. 这么写注释,老板会不会开除我?
  8. boost::spirit模块实现使用迭代器位置注释 AST的测试程序
  9. 为什么计算机能听懂人的指令,为什么计算机有听懂命令的能力?
  10. 使用Gradle将JAR工件发布到Artifactory
  11. 表现与数据分离;前台MVC
  12. 一至七-----小东西
  13. python-面向对向-实例方法的继承-多继承父类中的super与子类实例对象的关系
  14. C#LeetCode刷题之#56-合并区间(Merge Intervals)
  15. obs多推流地址_什么都比不上动手能力,OBS 推流实践小记
  16. 自然语言三兄弟NLP、NLU、NLG傻傻分不清?一文搞懂它们的区别
  17. 被遗忘的设计模式——空对象模式(Null Object Pattern)
  18. R语言中的函数5:purrr:map()
  19. APIS(BOM)——Window对象、本地存储
  20. com.google.guava包里面的相关简单方法

热门文章

  1. 如何使用Beckhoff平台进行串口通讯(EL6002,EL6022)
  2. JDK1.8下载 百度网盘
  3. 电商大促作战指南之全链路压测
  4. 决策树CART介绍*
  5. 昂达平板不能开机刷机_手把手教你平板电脑刷机方法
  6. 软件设计模式经典书籍推荐
  7. 深入浅出计算机组成原理
  8. 计算机辅助设计rhino试题,计算机辅助设计基础期末复习试题(完整版).doc
  9. QCC3020呼吸灯设计
  10. 【模拟器】网工福音!华三模拟器HCL升级,部分功能超越eNSP和EVE!