扫描线算法

时间:2012-10-14 00:06:23

标签: algorithm graphics line edge-detection scanline

在实施扫描线算法时,我被困在中途(或在开始时你可以说)。 我遵循奇偶校验测试,即

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并且它将保持着色线直到检测到下一个较高行的边缘。

对此有什么标准解决方案吗?

1 个答案:

答案 0 :(得分:0)

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