【GAMES101】Lecture 09 重心坐标

2024-01-24 22:04

本文主要是介绍【GAMES101】Lecture 09 重心坐标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们之前说着色过程中以及这个计算法线的时候需要用到这个插值(Interpolation),然后插值是通过这个重心坐标(Barycentric Coordinates)来实现的

目录

重心坐标

插值


重心坐标

注意哈我们这里说的三角形的重心坐标并不是指这个三角形重心的坐标,而是指一套坐标系,这套坐标系(α,β,γ)用来表示三角形这个平面上的点,三角形有这个三个顶点的坐标A、B、C,那么这个平面上的点可以表示为(x,y)=αA+βB+γC,其中α+β+γ=1,那么这个(α,β,γ)就是这个点的重心坐标,当α,β,γ都非负时,这个点在三角形内

自然三角形的三个顶点的重心坐标就是A(1,0,0)、B(0,1,0)、C(0,0,1)了 

那如何计算任意一个点的重心坐标呢,这个是可以通过面积比来计算的,对于三角形内的任意一个点,它可以和三个顶点连线形成三个小三角形,那么这个点的重心坐标就是对应小三角形和大三角形的面积比

由此我们可以知道三角形重心的重心坐标是什么,因为重心和三个顶点连线所形成的三个三角形面积相等嘛,然后重心的重心坐标就是(⅓,⅓,⅓)

 实际上由刚刚的面积比计算方法可以推出一种《简化》的计算方法

插值

有了重心坐标后,对于已知三角形三个顶点的属性(比方说位置、纹理、坐标、颜色、法线、深度、材质等等),都可以通过插值来计算出三角形内部任意点的属性,并且是看起来平滑过渡的,那怎么做呢?我们不是已经有重心坐标(α,β,γ)了吗,那么对于任意点的属性都可以通过三个顶点的属性进行(α,β,γ)的线性组合得到

这里需要注意的是,在投影变换的时候,应该先做这个插值再投影

这篇关于【GAMES101】Lecture 09 重心坐标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/641156

相关文章

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

09 生命周期

生命周期 beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestorydestoryed 辣子鸡:香辣入口,犹如吃了炫迈一样 - - - 根本停不下来 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport"

Learn ComputeShader 09 Night version lenses

这次将要制作一个类似夜视仪的效果 第一步就是要降低图像的分辨率, 这只需要将id.xy除上一个数字然后再乘上这个数字 可以根据下图理解,很明显通过这个操作在多个像素显示了相同的颜色,并且很多像素颜色被丢失了,自然就会有降低分辨率的效果 效果: 但是这样图像太锐利了,我们加入噪声去解决这个问题 [numthreads(8, 8, 1)]void CSMain(uint3 id

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution {public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k)

【SpringMVC学习09】SpringMVC中的拦截器

Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法。 1. springmvc拦截器的定义和配置 1.1 springmvc拦截器的定义 在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的

周末总结(2024/09/07)

工作 人际关系核心实践: `要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利益冲突是直接质疑,要快准狠,不要内耗、 回复消息要控制在30mins之内,一定要及时回复`` 工作上的要点 现状(已经提了离职,last day在9月20号)

【视频教程】手把手AppWizard轻松制作一个emWin滑动主界面控制框架,任意跳转控制(2024-09-06)

现在的新版AppWizard已经比较好用,用户可以轻松的创建各种项目常规界面。 比如早期创建一个支持滑动的主界面框架,并且可以跳转各种子界面,仅仅界面布局和各种图片格式转换都要花不少时间,而现在使用AppWizard,可以说轻轻松松,毫不费力。 用户唯一要做的就是根据自己的芯片性能做一定的速度优化。 视频: https://www.bilibili.com/video/BV17Rp3eLE

业务资源管理模式语言09

示例: 图13 表示了QuoteTheMaintenance 模式的一个实例,在汽车修理店系统中,其中“Vehicle”扮演“Resource”,“Repair Quotation”扮演“Maintenance Quotation”,“Repair shop branch”扮演“Source-party”,“Customer”扮演“Destiny-Party”。 图13——QuoteThe