计算远或近平面与三角形之间的交点

时间:2016-11-17 17:01:32

标签: algorithm math graphics linear-interpolation rasterizing

假设,gluPerspective的near和far值分别为1和100。我想剪切z值大于(-near)或小于(-far)的三角形部分,并将剩余的多边形划分为两个三角形,如下图所示。

考虑远方飞机:

考虑近平面:

另一个案例:

我用以下方式计算了交点: z_clip = -far(用于考虑远平面)或z_clip = -near(用于考虑近平面)

例如:我们考虑(x1,y1,z1)和(x2,y2,z2)之间的边,然后:

co-efficient = (z_clip - z1) / (z2 - z1)
xc = x1 + co-efficient * (x2 - x1)
yc = y1 + co-efficient * (y2 - y1)
zc = z_clip

(xc,yc,zc)将是一个交点。同样,我可以计算其他边缘的另一个交点。例如:(10,0,-50)和(0,0,-150)之间的边将在点(5,0,-100)中被切割。

Original Triangle:

0 0 -150
10 0 -50
0 10 -50

After Clipping:

Triangle1:
0 10 -50
5 0 100
0 5 -100

Triangle2:
10 0 -50
0 5 -100
0 10 -50

我的计算程序是正确的还是程序中有什么问题?

0 个答案:

没有答案