三角形内部线性插值方法
来源:互联网 发布:马小丝的淘宝 编辑:程序博客网 时间:2024/06/10 02:57
今天晚上刚做完网易游戏笔试题,有一道是让求插值,无奈不会,特意从晚上找到了方法
问题:
在三角形的三个顶点具有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点颜色值
转载地址: http://www.cnblogs.com/wangchengfeng/p/3453194.html
0 0
- 三角形内部线性插值方法
- 线性插值方法
- 线性插值
- 线性插值
- 线性插值
- VC中用线性插值方法进行图像放大
- VC中用线性插值方法进行图像放大
- [转]openCV: 线性插值方法进行图像放大
- OpenCV: 线性插值方法进行图像放大
- Bayer图像色彩还原线性插值方法
- 使用二分法查找数据进行线性插值的方法
- 三角形有向面积 + 判断点是否在三角形内部
- 判断点是否在一个三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用"6.2f"格式输出。
- Hibernate之旅二:Hibernate简介
- 《ACM程序设计》书中题目 R
- 测试基础---测试策略与方法01
- Unity3D说明文档翻译-The Game View
- 三角形内部线性插值方法
- Django Filter get
- leetcode 141. Linked List Cycle
- 剑指Offer 10 二进制中1得个数
- Word Search
- Android 非静态内部类/匿名类引起的内存泄漏
- 测试基础---测试策略与方法02
- unix/linux 系统实现多个进程监听同一个端口
- 欢迎使用CSDN-markdown编辑器