重心座标插值(Barycentric Interpolation)
提要
重心座标插值在图形学领域有着很重要的应用,比如Ray Tracing算法的ray - triangle intersection 检测,比如有限元模拟中的模型简化等。
一维情况
从最简单的开始,一个线段:
如何表示p点的值?
可以这样想,p总是在x1和x2之间徘徊,不知道如何选择,蓝色线段的长度t表示p对x2的喜爱程度,红色线段(1-t)表示对x1的喜爱程度。
那么P点的值就可以表示为
.
二维情况
二维情况下就是三角形了。
求点p的值。
二维情况下就应该联想到面积。想法类似,如下图:
蓝色三角形面积A3表示p喜爱蓝色点的程度,绿色三角形和红色三角形同理。
那么p点的座标就可以表示为:
令 u = A1/A ,v = A2/A, w = A3/A
则式子可以化为
ux1 + vx2 + wx3.
其中 u+v+w=1.
求三角形面积
已知三角形三个顶点的座标值,求三角形面积。如下图
首先求平行四边形的面试,用到的是向量的点乘。
Parallelogramarea= ||(B−A)×(C−A)||Trianglearea=Parallelogramarea2Parallelogramarea= ||(B−A)×(C−A)||Trianglearea=Parallelogramarea2Parallelogramarea= ||(B−A)×(C−A)||Trianglearea=Parallelogramarea2Parallelogramarea= ||(B−A)×(C−A)||Trianglearea=Parallelogramarea2Parallelogramarea= ||(B−A)×(C−A)||
三角形面积除以2就可以了。
Trianglearea=||(B−A)||∗||(C−A)||sin(θ)2
三维情况
三维1情况对应的就是四面体( Tetrahedron)了。如下图,还是求P点的值。
也许大家第一想到的是体积是这样的,计算每个小四面体的体积,然后和最大的四面体体积相比,得到对应的比例,原理是这样的,但是有更加简单的方法!
首先定义点到平面的有向距离为:D(p , PLabc),其中p、a、b、c均为空间上的点,而PL是由a、b、c三个点所构成的平面,那么对于上图分布的一个四面体以及另外的任意一个点P,可得该点的重心坐标为:
其中的,,,分别是P点相对于a,b,c,d点的权重,而且有+++= 1
有了重心坐标之后就可以使用其来判断P点与该四面体间的关系:
- 如果,,,均属于[0,1],那么P点位于该四面体的内部。
- 如果其中某一项不在此范围内,还可以根据其越域方式来判断P点在四面体外的分布情况:比如小于0,那么P点就处于bcd所对应的平面之下(此处用a点来参考平面的上下);反之,若其大小1,那么P点就处于过P点且平行于bcd平面的平面之上。
参考
Barycentric Coordinates - http://www.scratchapixel.com/lessons/3d-basic-lessons/lesson-9-ray-triangle-intersection/barycentric-coordinates/
Barycentric Coordinates of Tetrahedron - http://blog.csdn.net/bugrunner/article/details/7423727
重心座标插值(Barycentric Interpolation)相关推荐
- 着色Shading(2)(着色的继续、管线和纹理映射)(笔记)
文章目录 前言 四.高光项(Specular Term) 高光是什么 Blinn-Phong高光项 五.环境光照项(Ambient Term) 环境光照是什么 六.Blinn-Phong反射模型的总结 ...
- GAMES101笔记_Lec07~09_着色 Shading
0 我们已经学了什么 What We've Covered So Far 空间中定义了一个摄像机,通过某些变换使模型摆好姿势(Model) 通过观测变换让摄像机放在原点,得到标准的 [ − 1 , 1 ...
- [欠驱动机器人]4,动态规划(Dynamic Programming)
目录 前言 控制问题变成优化问题 新增成本(Additive cost) 图搜索的最优控制 连续动力学方程 HJB 方程 求出最小控制 数值求解J 方程逼近与数值迭代 线性方程逼近 网格上的值迭代 连 ...
- CVPR 2018 | 腾讯AI Lab关注的三大方向与55篇论文
感谢阅读腾讯 AI Lab 微信号第 32 篇文章,CVPR 2018上涌现出非常多的优秀论文,腾讯 AI Lab 对其中精华文章归类与摘要,根据受关注程度,对生成对抗网络.视频分析与理解和三维视觉三 ...
- 三次样条插值 cubic spline interpolation
什么是三次样条插值 插值(interpolation)是在已知部分数据节点(knots)的情况下,求解经过这些已知点的曲线, 然后根据得到的曲线进行未知位置点函数值预测的方法(未知点在上述已知点自变量 ...
- 1月16日:拉格朗日中值定理,罗尔定理,柯西中值,拉格朗日插值,牛顿插值,重心插值,拉格朗日乘子法的证明
拉格朗日中值定理 https://www.bilibili.com/video/BV117411E7kx?from=search&seid=17921778669593975548 拉格朗日中 ...
- 模板:拉格朗日插值(多项式)
所谓拉格朗日插值,就是在"拉格朗日"进行的一项民俗活动.拉格朗日通常在每年2月的第82个星期三. (逃) 前言 非常强大的算法. 当可以证明某个函数是一个 kkk 次多项式时,我们 ...
- 线性插值算法实现图像_C程序实现插值搜索算法
线性插值算法实现图像 Problem: 问题: We are given an array arr[] with n elements and an element x to be searched ...
- 常用插值核介绍-nearest,linear,cubic,lanzcos
目录 简介 nearest插值核 linear插值核 cubic插值核 lanczos插值核 图像插值几何中心对齐 图像插值 展望 参考资料 简介 主要介绍常用的插值核(interpolation k ...
最新文章
- 06-Windows Server 2012 R2 会话远程桌面-标准部署-RD网关(RemoteApp)
- 这些片段在Android编程中很有用 (ZT)
- Rust从入门到放弃(1)—— hello,world
- thinkphp 助手函数url不生成https_如何用ThinkPHP框架写一个快递查询接口
- python关键词提取源码,python实现textrank关键词提取
- 【PPT分享】特斯拉远景规划及中国供应链的机遇.pdf(附119页ppt下载链接)
- C语言基础:用快速排序实现输出最大数
- Python数据分析之简书七日热门数据分析
- 《Windows程序设计》之剪贴板查看器
- Matlab中图形对象属性gcf使用
- oracle中间人投毒漏洞,ORACLE远程投毒漏洞修复(RAC环境)
- SONET、SDH、POS简介
- python循环嵌套打印小星星_python基础:嵌套循环及例子(打印小星星,九九乘法表)...
- 修改 vscode 中主题注释中文的斜体格式
- 企业品牌私域化运营,私域流量只是起步
- 侧边栏如何展开与收起
- 奈学教育《大数据架构师》课程大纲
- Conhash 和 Maglev hash对比
- 计算机联到同一个局域网,两台电脑连接同一个wifi算是局域网么
- 2017年科技界十大新闻,你都知道吗?
热门文章
- 二年级数学计算机教学教案,人教版二年级数学备课教案
- 项目中组件工厂的注册方法
- 《Python语言程序设计》王恺 机械工业出版社 第二章课后习题答案
- 文档对象模型DOM(获取元素节点、设置节点属性)
- 跨境电商卖家工具——跨境卫士内容介绍
- 论文阅读笔记2——Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks
- 跟女友旅游三天,还好Python治好了我的内耗
- 【一周头条盘点】中国软件网(2018.1.22~2018.1.26)
- 深度学习——残差网络ResNets
- 灵感 | 品,你细品,脑洞超大大大大