博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消隐算法
阅读量:6312 次
发布时间:2019-06-22

本文共 625 字,大约阅读时间需要 2 分钟。

Z-buffer算法

 

一、算法思想

先将Z缓冲器中各单元的初始值置为小值。当要改变某个像素的颜色值时,首先检查当前多边形的深度

值是否大于该像素原来的深度值(保存在该像素所对应的Z缓冲器的单元中)。如果大于原来的z值,说明当前多边形更靠近观察点,用它的颜色替换像素原来的颜色。

 

二、具体实现

(Z是近大远小)

从代码可看出,此算法需要2个数据,即帧缓冲器和深度缓冲器

 

但是此算法的缺点较多:

所以引入了一种改进方法,用单个变量代替整个帧缓存

三、改进后的算法

1.代码

 

2.点与多边形的包含性检测

此算法关键是找出像素点是否在pk的投影多边形内 

(1)射线法

 

 

(2)弧长法

 

 

(3)以顶点符号为基础的弧长累加法

同一个象限是0,跨过一个象限是π/2,跨过2个是π。这样不用投影,直接根据象限则可判定。

 

 区间扫描线算法

 

 一、算法思想

 

 二、具体实现

对投影多边形求交点,然后对交点排序。从而形成一个个区间,在区间中取一点,计算此处各个相关面的z值并进行比较,将此区间填色为z值最大面的颜色。

   

求交可以用增量方法来简化。

 

区域子分割算法

 

一、算法思想

 分而治之,不断分割窗口直到窗口内目标足够简单,可以显示为止。

                      

1.窗口仅包含一个多边形

2.窗口与一个多边形相交,且窗口内无其它多边形

3.窗口为一个多边形所包围

4.窗口与一个多边形相分离

 

二、具体实现

                     

 

 

转载于:https://www.cnblogs.com/jingrui/p/9703983.html

你可能感兴趣的文章
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>