在实施扫描线算法时,我被困在中途(或在开始时你可以说)。 我遵循奇偶校验测试,即
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并且它将保持着色线直到检测到下一个较高行的边缘。
对此有什么标准解决方案吗?
答案 0 :(得分:0)
如果顶点方向发生变化,请不要计算。如果方向相同,则计算它。如果该行是水平的,则忽略它并检查下一个顶点。