【发布时间】: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