正在加载图片...
for(多面体上的每个多边形P) if(象素点(,j)在p的投影多边形之内) (计算R在(i,j处的深度值 depth; if( depth大于zb) I zb= depth index = k If(zb!= Minvalue)计算多边形Pa在交点(,j)处的光照颜色并显示 上面的算法要求点与多边形的包含性检测,实际上是判断一个给定的点是在一个多边形内、在多边 形外,还是在多边形边界上。可采用射线法或弧长法。 (1)射线法 由被测点P处向y=-m方向作射线,交点个数是奇数,则被测点在多边形内部,否则,在多边形外 部。若射线正好经过多边形的顶点,则采用“左开右闭”的原则来实现。即:当射线与某条边的顶点 相交时,若边在射线的左侧,交点有效,计数:若边在射线的右侧,交点无效,不计数。 (a)奇数交点(b)偶数交点 图2.7.12射线法交点计数 (a)射线与边重合(b)射线穿过交点相邻的边(c)射线在交点邻边的一侧 图2.7.13射线与顶点相交时的计数 实际上,我们只关心交点个数,没必要真正求出射线与边的交点。改进的射线与边判是否相交方法如 下:被检测的点P(x,y)向 方向作射线。对边PP按以下顺序检测。 若(y<y)且(y<y+),点在边的下方,射线与边无交。 若(x>x1)且(x>x+),点在边的右侧,射线与边无交。 若(x<=x)且(x<=x1+),点在边的左侧,射线与边无交。 a(y(=yi) aNd(y (=i+1))ANDfor(多面体上的每个多边形 Pk) { if(象素点(i,j)在 pk的投影多边形之内) { 计算 Pk在(i,j)处的深度值 depth; if(depth 大于 zb) { zb = depth; indexp = k; } } } If(zb != MinValue) 计算多边形 Pindexp在交点 (I,j) 处的光照颜色并显示 } } 上面的算法要求点与多边形的包含性检测,实际上是判断一个给定的点是在一个多边形内、在多边 形外,还是在多边形边界上。可采用射线法或弧长法。 (1)射线法 由被测点 P 处向 y = -  方向作射线,交点个数是奇数,则被测点在多边形内部,否则,在多边形外 部。若射线正好经过多边形的顶点,则采用“左开右闭”的原则来实现。即:当射线与某条边的顶点 相交时,若边在射线的左侧,交点有效,计数;若边在射线的右侧,交点无效,不计数。 (a)奇数交点 (b)偶数交点 图 2.7.12 射线法交点计数 (a)射线与边重合 (b)射线穿过交点相邻的边 (c)射线在交点邻边的一侧 图 2.7.13 射线与顶点相交时的计数 实际上,我们只关心交点个数,没必要真正求出射线与边的交点。改进的射线与边判是否相交方法如 下:被检测的点 P(x,y)向 y = -  方向作射线。对边 Pi Pi+1按以下顺序检测。 若(y < yi ) 且(y < yi+1 ), 点在边的下方,射线与边无交。 若(x > xi ) 且(x > xi+1 ), 点在边的右侧,射线与边无交。 若(x <= xi ) 且(x <= xi+1 ), 点在边的左侧,射线与边无交。 若 ( (y <= yi ) AND (y <= yi+1 ) ) AND
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有