• 消隐算法


    Z-buffer算法

    一、算法思想

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

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

    二、具体实现

    (Z是近大远小)

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

    但是此算法的缺点较多:

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

    三、改进后的算法

    1.代码

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

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

    (1)射线法

     

    (2)弧长法

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

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

     区间扫描线算法

     一、算法思想

     二、具体实现

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

       

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

    区域子分割算法

    一、算法思想

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

                          

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

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

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

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

    二、具体实现

                         

  • 相关阅读:
    nginx配置
    day5 业务开发中较有用代码
    day4 Vue基础
    npm vue的一些命令
    day3 ES6基础
    python_矩阵的加法和乘法计算(包括矩阵的动态输入,纯列表实现不引入其他模块)
    python_利用元组实现剪刀石头布
    python_整型与IP地址的转换
    python_判断标识符的合法性
    python_生成随机数与列表排序
  • 原文地址:https://www.cnblogs.com/jingrui/p/9703983.html
Copyright © 2020-2023  润新知