📜  计算机图形扫描线算法

📅  最后修改于: 2020-12-21 09:31:33             🧑  作者: Mango

扫描线算法

它是一种图像空间算法。它一次处理一行,而不是一次处理一个像素。它使用了一致性的概念区域。该算法记录边缘列表,活动边缘列表。因此必须进行准确的簿记。边列表或边表包含两个端点的坐标。活动边缘列表(AEL)包含给定扫描线在其扫描过程中相交的边缘。活动边缘列表(AEL)应按x的升序排序。 AEL是动态的,不断增长和不断缩小的。

下图显示了边缘和活动边缘列表。扫描线AC 1的活动边沿列表包含e 1 ,e 2 ,e 5 ,e 6个边缘。扫描线AC 2的有效边沿列表包含e 5 ,e 6 ,e 1

扫描线可以处理多个表面。在处理每条扫描线时,该线将与许多表面相交。相交线将确定可见的表面。完成每个表面的深度计算。定义了后视平面。确定表面的可见性后,将强度值输入刷新缓冲区。

算法

步骤1:开始算法

步骤2:初始化所需的数据结构

  • 创建具有颜色,边指针,系数的多边形表
  • 建立边缘表包含有关以下信息的信息:边缘的端点,指向多边形的指针,反斜率。
  • 创建活动边列表。这将按x的升序进行排序。
  • 创建一个标志F。它将具有两个值on或off。

步骤3:对所有扫描线执行以下步骤

  • 使用y作为值在活动边缘列表(AEL)中按排序顺序输入值
  • 使用背景色进行扫描,直到标记(即F)亮起
  • 当一个多边形标记处于打开状态时,这是针对表面S 1的,将颜色强度作为I 1输入刷新缓冲区
  • 当两个或图像表面标志处于打开状态时,请根据深度对表面进行排序,并将强度值S n用于第n个表面。该表面的z深度值最小
  • 对其余平面使用相干概念。

步骤4:停止算法