【问题标题】:Scanline Algorithm扫描线算法
【发布时间】:2012-10-14 00:06:22
【问题描述】:

在实施扫描线算法时,我陷入了中途(或者你可以说是一开始)。 我遵循奇偶校验,即,

for each scanline

edgeCnt = 0; 

for each pixel on scanline (l to r)

 if (oldpixel->newpixel crosses edge)

  edgeCnt ++;

// draw the pixel if edgeCnt odd

if (edgeCnt % 2)

  setPixel(pixel);

假设我的三角形有顶点 A(10,10)、B(100, 100) 和 C(200, 30)。 现在这个算法的问题是。点 A 无法计数,因为如果计数,则在同一水平线上没有检测到边缘,因此 A 之后的整条线将被着色。现在,如果我排除顶点,则顶点 C 之前的像素会被着色,但由于扫描不会检测到顶点,因此不会检测到 C,它将继续对线条着色,直到检测到下一条较高线条上的边缘。

有没有标准的解决方案?

【问题讨论】:

    标签: algorithm graphics line edge-detection scanline


    【解决方案1】:

    如果顶点的方向发生变化,不要计算它。如果方向相同,数一下。如果这条线是水平的,则忽略它并检查下一个顶点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多