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

三角形内部线性插值方法

作者: 胡萝卜啊啊啊 | 来源:发表于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点颜色值。

相关文章

  • 三角形内部线性插值方法

    问题: 在三角形的三个顶点具有3个不同颜色,如何通过插值计算出三角形中每个点的颜色? 应用实例:高洛德着色使用3个...

  • 【数学】线性插值

    线性插值有一阶、二阶、三阶,对应为单线性插值、双线性插值和三线性插值。三者皆为线性插值,不同之处在于单线性插值为2...

  • Stata系列-如何处理缺失值

    对于缺失的数据,为保持样本容量,可以采用“线性插值”的方法 以上是线性插值的简单原理,如果y有指数增长趋势,则应先...

  • 着色模型和光照模型

    着色模型: 高洛德着色(Gouraud shading):即基于顶点计算颜色后在渲染的图元内部进行线性插值。当光照...

  • 28. 图像缩放

    插值方法 四种插值,最近邻域插值 双线性插值 像素关系重采样 立方插值其中最近邻域插值、双线性插值原理如下: 1)...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • 线性插值 np.interp

    计算得出0-299这300个数的线性插值 ok, 300个数字线性插值完成!

  • 方法内部类

    定义在外部类方法中的内部类,也称局部内部类方法内部类1.定义在方法内部,作用范围也在方法内2.和方法内部成成员使用...

  • js中享元模式

    享元模式主要是对其数据,方法共享分离,它将数据和方法分成内部数据,内部方法和外部数据。外部方法,内部方法与内部数据...

  • 内部类

    静态内部类 成员内部类 方法内部类

网友评论

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

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