美文网首页
三角形内部线性插值方法

三角形内部线性插值方法

作者: 胡萝卜啊啊啊 | 来源:发表于2019-05-31 15:00 被阅读0次

    问题:

    在三角形的三个顶点具有3个不同颜色,如何通过插值计算出三角形中每个点的颜色?

    应用实例:高洛德着色使用3个顶点的颜色进行线性插值,结果如下图:

    image

    解决方案:

    显然,无论是线性插值还是双线性插值的都无法解决这个问题。而使用重心坐标则可以很好的解决这个问题。简单的来说,重心坐标就是子三角形与大三角形的面积比,具体的解释参看维基百科,计算过程如下:

    已知三角形的三个顶点坐标P1, P2, P3, 在三角形内的任意点P, 都存在u和v(由于三角形是一个2D图形,只有两个自由度,所以只要u和v即可),使得

    P = (1 - u - v) * P1 + u * P2 + v * P3

    P点在三角形内,所以(u, v)必须满足条件u ≥ 0, v ≥ 0, u + v ≤ 1。u、v体现了每个顶点对特定区域的权重贡献,(1 - u - v)则是第三个权重,只要计算出u和v,就可以计算出每个顶点对P点的贡献。现在已知P1, P2, P3和P的坐标值,求解u和v,只需要解二元一次方程即可:

    P.x = (1 - u - v) * P1.x + u * P2.x + v * P3.x

    P.y = (1 - u - v) * P1.y + u * P2.y + v * P3.y

    有了u、v值,对P1, P2, P3的颜色值进行加权平均,即可得到P点颜色值。

    相关文章

      网友评论

          本文标题:三角形内部线性插值方法

          本文链接:https://www.haomeiwen.com/subject/zmzwtctx.html