问题:

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

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

解决方案:

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

  已知三角形的三个顶点坐标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.cnblogs.com/wangchengfeng/p/3453194.html

三角形内部线性插值方法相关推荐

  1. 如何判断一个点是否在三角形内部

    如何判断一个点是否在三角形内部 昨天学到一个方法,虽然是数学上的问题,而且也没找到具体严格的证明,但觉得知道下其用法还是很好的. 问题:如何判断一个点是否在三角形内部 方法:比如三角型外有点P,三角型 ...

  2. 三维空间刚体运动4-3:四元数线性插值方法:Squad

    三维空间刚体运动4-3:四元数线性插值方法:Squad Squad的引出 B e ˊ z i e r c u r v e B\acute{e}zier \space curveB e ˊ zier c ...

  3. 【c++】判断一个点是否在三角形内部

    判断一个点是否在三角形内部 基础知识 整体代码 之前做笔试题的时候,忘了怎么计算点是否在三角形的内部,写个博客记录一下. 基础知识 使用结构体保存点的坐标 // 用一个结构体去表示点 struct p ...

  4. Bayer图像色彩还原线性插值方法

    这篇文献是从知网下载的,感觉本文很有实用性,所以将其转载至此,如果带来任何纠纷 Bayer图像色彩还原线性插值方法 孙辉,柏旭光,孙丽娜,李志强 (中国科学院 长春光学精密机械与物理研究所 中国科学院 ...

  5. 判断点是否在三角形内部

    判断点是否在三角形内部 给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内.这是游戏设计中一个常见的问题.需要注意的是,这里假定点和三角形位于同一个平面内. 内角和法 连接点P和三角形的三 ...

  6. 三角形一点到三边距离最小_三角形内部一点到三边距离之和的上界与下界

    三角形内部一点到三边距离之和的上界与下界 刘健 [摘 要] @@ 设△ABC 内部任意一点 P 到三边 BC,CA,AB 的距离分别是 r1,r2,r3, 三边上的高线为 ha,hb,hc 则成立不等 ...

  7. 三角形内部整点的个数【皮克定理】

    皮克定理 一张方格纸上,上面画着纵横两组平行线,相邻平行线之间的距离都相等,这样两组平行线的交点,就是所谓格点.如果取一个格点做原点O,如图1,取通过这个格点的横向和纵向两直线分别做横坐标轴OX和纵坐 ...

  8. 判断一个点是否在三角形内部

    题目:在二维坐标系中,所有的值都是double型,那么一个三角形可以由三个点来代表,给定三个点代表的三角形,再给定一个点(x, y),判断(x, y)是否在三角形中 基本思路: 如果一个点O在三角形的 ...

  9. 判断点在三角形内部方法

    本文只是翻译和整理,原文在此http://www.blackpawn.com/texts/pointinpoly/default.html 转发自https://www.cnblogs.com/gra ...

最新文章

  1. 5.3.5 TCP拥塞控制
  2. cdh 安装_CDH 中为spark 安装 python3
  3. ncbi查找目的基因序列_教你如何利用NCBI寻找目的基因
  4. leetcode 606. Construct String from Binary Tree | 606. 根据二叉树创建字符串
  5. C++ STL中set底层实现方式
  6. 遍历输出所有子视图(View)
  7. 玩下软工项目,第一轮--全局Context的获取,SQLite的建立与增删改查,读取用户通话记录信息...
  8. 如何使用W5300实现ADSL连接(二)
  9. C语言控制台应用程序绘制曲线,C语言控制台绘制曲线的实现代码
  10. PyTorch 1.0 中文官方教程:Autograd:自动求导
  11. LeetCode刷题(7)
  12. C++基础::自制异常定位器
  13. SpringBoot+Shiro学习(七):Filter过滤器管理
  14. 将原生安卓项目封装为cordova插件实例分析
  15. CListCtrl控件的使用指南
  16. 3D建模就业前景如何?
  17. cdr 表格自动填充文字_cdr中看似简单的小工具,你真的会用吗?
  18. 文书档案管理系统服务器版,创奇文书档案管理系统客户端官方版
  19. C# CAD操作之定位实体位置(视图操作缩放)
  20. 一周 Go World 新鲜事-2019W11

热门文章

  1. 4个关于中台最常见的误区,用最通俗的话给你一次解释清楚
  2. mysql数据库报错1075_MySQL数据库之在MAC OS X上安装MYSQL
  3. Mac Os 安装github上的开源软件
  4. 集合类型及其操作(复习)
  5. python50种算法_一文洞悉Python必备50种算法
  6. 石河子大学计算机类学什么,石河子大学有哪些专业好,2021年石河子大学各专业排名...
  7. android 自定义布局 根据布局获取类,android自定义布局中的平滑移动之ViewGroup实现...
  8. 自注意力机制_自注意力机制在计算机视觉中的应用【附PPT与视频资料】
  9. 第 19 次 CCF CSP 认证 202006-2 稀疏向量(svector)
  10. Altium AD20批量修改丝印大小、更改丝印字体、丝印显示中文、更改位号丝印 相对元件的位置