在此代码中:
Scan-line fill OpenGL/GLUT algorithm in C++
这一部分: 它是如何工作的 任何人都可以向我解释这是为了什么?
void edgedetect(float x1,float y1,float x2,float y2,int *le,int *re)
{
float temp,x,mx;
int i;
if(y1>y2)
{
temp=x1,x1=x2,x2=temp;
temp=y1,y1=y2,y2=temp;
}
if(y1==y2)
mx=x2-x1;
else
mx=(x2-x1)/(y2-y1);
x=x1;
for(i=int(y1);i<=(int)y2;i++)
{
if(x<(float)le[i]) le[i]=(int)x;
if(x>(float)re[i]) re[i]=(int)x;
x+=mx;
}
}
答案 0 :(得分:1)
计算扫描线的左右边缘(x坐标)。扫描线的Y坐标隐含地定义为le&amp; re的数组索引。因此,例如,第i个扫描线被定义为从点(le [i],i)到(re [i],i)的线。
你可以把它想象成你从底部水平扫描场景。并保持扫描线第一次击中物体的位置的x坐标(通过左侧的物体进入)以及扫描线第二次击中物体的位置(将物体从右侧击中)。