获取任意2d三角形的扫描线

时间:2012-01-13 09:13:04

标签: math graphics interpolation rasterizing

如何检索2D三角形中所有线条的扫描线?

我试图实现2D软件渲染器的最基本功能,即纹理映射三角形。我做过这件事的时间比使用OpenGL算得多,但我发现自己在试图自己做的时候一瘸一拐。

我看到一些文章说为了填充一个三角形(其三个顶点各自的纹理坐标夹在[0,1]中),我需要在这三个点之间进行线性插值。什么?我认为插值是在两个n维值之间。

请注意;这不是3D,它严格来说是2D,所有三角形都是任意的(不以任何方式轴对齐)。我只需要像OpenGL一样用屏幕填充屏幕。我无法使用OpenGL作为解决方案。

2 个答案:

答案 0 :(得分:2)

可在此处找到优秀的答案和说明:http://sol.gfxile.net/tri/index.html

您可以使用Bresenham algorithm绘制/找到边。

答案 1 :(得分:1)

处理它的一种方法是,如果使用扫描线算法,则分两步进行插值。首先,在三角形的边缘上插值,并在开始绘制扫描线时,在该扫描线的起始值和结束值之间进行插值。

由于您在2d工作,您还可以使用矩阵变换来获得纹理坐标的屏幕坐标。昨天我回答了类似的问题here。这种技术在数学中被称为change of basis