重心坐标

2023-10-31

数学中,重心坐标是由单形(如三角形四面体等)顶点定义的坐标。重心坐标是齐次坐标的一种。

v1, ..., vn向量空间 V 中一个单形的顶点,如果 V 中某点 p 满足,

(/lambda_1 + /cdots + /lambda_n)/, p = /lambda_1 /, v_1 + /cdots +/lambda_n /, v_n ,

那么我们称系数 (λ1, ..., λn) 是 p 关于 v1, ..., vn重心坐标。这些顶点自己的坐标分别是 (1, 0, 0, ..., 0), (0, 1, 0, ..., 0), ..., (0, 0, 0, ..., 1)。重心坐标不是惟一的:对任何不等于零的 k,(k λ1, ..., k λn) 也是 p 的重心坐标。但总可以取坐标满足 λ1 + ...+ λn = 1,称为正规化坐标。注意到定义式在仿射变换下不变,故重心坐标具有仿射不变性。

如果坐标分量都非负,则 pv1, ..., vn凸包内部,即由这些顶点组成的单形包含 p。我们设想如果有质量 λ1, ..., λn 分别位于单形的顶点,那么质量中心就是 p。这是术语“重心”的起源,1827年奥古斯特·费迪南德·莫比乌斯最初引入。

三角形的重心坐标

三角形情形,重心坐标也叫面积坐AP:PC 标,因为 P 点关于三角形 ABC 的重心坐标和三角形 PBC, PCAPAB 的(有向)面积成比例,证明如下(图如右)。

我们用黑体小写字母表示对应点的向量,比如三角形 ABC 顶点为 /textbf{a}/, ,/textbf{b}/,/textbf{c}/,,P 点为 /textbf{p} 等。设 PBC, PCAPAB 面积之比为 /lambda_1 :/lambda_2:/lambda_3/,λ1 + λ2 + λ3 = 1,设射线 APBC 交于 D,则

BD:DC = λ23, 从而 /textbf{d}= /frac{/lambda_2 /textbf{b}+/lambda_3 /textbf{c}}{/lambda_2+/lambda_3},
AP:PD = (λ2 + λ3):λ1,故
/textbf{p}=/frac{(/lambda_2+/lambda_3) /textbf{d} +/lambda_1 /textbf{a}}{/lambda_1+/lambda_2+/lambda_3}/,,

/textbf{p}=/lambda_1 /textbf{a}+/lambda_2 /textbf{b}+/lambda_3 /textbf{c}/, .

所以,123) 就是 P 的重心坐标。

坐标变换

给定三角形平面一点 P,我们将这一点的面积坐标 /lambda_{1}/,/lambda_{2}/,/lambda_{3}/,笛卡尔坐标表示出来。

利用笛卡尔坐标中的三角形面积公式:


S(ABC)=/begin{vmatrix}1 &x_a&y_a//1 &x_b&y_b//1 &x_c&y_c///end{vmatrix}

我们可得:


/lambda_1=S(PBC)/S(ABC)=/begin{vmatrix}1 &x_p&y_p//1 &x_b&y_b//1 &x_c&y_c///end{vmatrix}/
/begin{vmatrix}1 &x_a&y_a//1 &x_b&y_b//1 &x_c&y_c///end{vmatrix}

类似地有 λ23,注意 ABC 构成一个三角形,上式的分母不可能为 0。

反过来则简单得多:

/textbf{p}=/lambda_1 /textbf{a}+/lambda_2 /textbf{b}+/lambda_3 /textbf{c} ,
xp = λ1xa + λ2xb + λ3xc,
yp = λ1ya + λ2yb + λ3yc.

判断一点的位置

因重心坐标是笛卡尔坐标的一个线性变换,从而它们在边和三角形区域之间的变化是线性的。如果点在三角形内部,那么所有重心坐标属于开区间 (0,1);如果一点在三角形的边上,至少有一个面积坐标 λ1...3 为 0,其余分量位于闭区间 [0,1]。如果有某个坐标小于 0,则位于三角形外部,具体分布可参考上图。

应用

面积坐标在涉及到三角形子区域的工程学问题时特别有用,经常可以化简解析积分求值,高斯积分法表也常以面积坐标的形式给出。

考虑由顶点 /textbf{v}_{1}/,, /textbf{v}_{2}/,/textbf{v}_{3}/, 定义的三角形 T,任何在三角形内部的点 /textbf{p} 都能写成顶点的加权和:

/textbf{p} = /lambda_{1} /textbf{v}_{1} + /lambda_{2} /textbf{v}_{2} + /lambda_{3} /textbf{v}_{3},

这里 /lambda_{1}/,/lambda_{2}/,/lambda_{3}/, 是面积坐标。注意到 /lambda_{3} = 1 - /lambda_{1} - /lambda_{2}/,。 从而,函数 fT 上的积分为:


/int_{T} f(/textbf{p}) / ds = 2S /int_{0}^{1} /int_{0}^{1 - /lambda_{2}} f(/lambda_{1} /textbf{v}_{1} + /lambda_{2} /textbf{v}_{2} +
(1 - /lambda_{1} - /lambda_{2}) /textbf{v}_{3}) / d/lambda_{1} / d/lambda_{2}
/,

这里 S 是三角形 T 的面积。注意上式具有线性插值的形式。

重心坐标提供了一种非结构网格上函数插值的方法,假设函数值在所有网格的顶点上已知。如果 0 /leq /lambda_i /leq 1 /;/forall/; i /in {1,2,3},则点 /textbf{p} 位于三角形内部或边界上。我们取 f 的插值为

f(/textbf{p}) = /lambda_1 f(/textbf{v}_1) + /lambda_2 f(/textbf{v}_2) + /lambda_3 f(/textbf{v}_3) ,

这个线性插值是自动正规的因为 λ1 + λ2 + λ3 = 1

四面体的重心坐标

重心坐标容易推广到三维空间。3 维单形即四面体,具有四个三角形面和四个顶点。

完全类似于三角形,四面体 /textbf{v}_1,/textbf{v}_2, /textbf{v}_3,/textbf{v}_4 的顶点 /textbf{v}_1的重心坐标为 (1,0,0,0),/textbf{v}_2 为 (0,1,0,0),如是等等。

/textbf{p} 的笛卡尔坐标和为关于四面体 /textbf{v}_1,/textbf{v}_2, /textbf{v}_3,/textbf{v}_4 的重心坐标的关系:


/lambda_1=/text{Vol}(PV_2V_3V_4)//text{Vol}(V_1V_2V_3V_4),/;/lambda_2=/cdots.

这里 Vol(V1V2V3V4)/textbf{v}_1,/textbf{v}_2, /textbf{v}_3,/textbf{v}_4 组成的四面体的体积,类似于三角形也可以用笛卡尔坐标的一个行列式表示出来。

3 维重心坐标和 2 维一样,可以确定一点是否位于四面体内部,也能对四面体网格上函数插值。因为利用重心坐标可以极大地简化 3 维插值,四面体网格经常用于有限元分析

参考文献

 

外部链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重心坐标 的相关文章

随机推荐

  • 目标检测与分类识别之提高map的方法---新生成类进行针对性训练

    什么是map呢 已经有不少对map的解释说得很明白了 在这里就不再赘述 在分类识别中 我们往往会遇到个别ap比较低的 在这种情况下 ap低的类显然会拉低map 我们在计算map的过程中 可能会得出以下结果 可以明显看出花盆 书籍纸张 金属器
  • 工作生活中的心灵成长

    上学的时候 刚开始英语学的挺好的 当了小组长 后来因为没有好好完成作业 让老师很生气 最后很不愉快 结果影响了后来英语学习 不认同老师的处理方式 也就影响了这门课的学习 现在想想最后的结果是我本可以学好的课 最后学习变得不在乎和抵触 影响了
  • python 运行中 Error 解决方法汇总

    大家在运行python过程中想必都遇见过此类情况 好了 话不多说 言归正传 各类ERROR出现情况总结 SyntaxError 括号没有成对出现时 使用 或者 自增自减操作符时 使用Python关键字作为变量名时 引号没有成对出现时 误将
  • 【ES】索引创建,为“非查询字段”不建索引 index store

    目录 创建索引 PUT 索引的名字 mappings properties xxx1属性 type 该属性的类型 xxx2属性 type 该属性的类型 ES客户端 PUT 索引的名字 Linux
  • Unity3d Ugui 5 Text

    Character 字符 1 Font 字体 2 Font Style 1 Normal 正常 2 Bold 粗体 3 Italic 斜体 4 Bold And Italic 粗体 斜体 3 Font Size 字体大小 4 Line Sp
  • train.Saver() restory Key not found in checkpoint

    加上tf reset default graph 在最前面就解决了 saver import tensorflow as tf tf reset default graph v1 tf get variable v1 shape 3 ini
  • 如何对Element组件的样式进行自定义修改

    如何对Element 组件的样式进行自定义修改 前言 举例项目 主要代码 效果 一 定位需要修改的样式 二 使用全局样式的修改方法 代码如下 三 使用局部样式的修改方法 代码如下 前言 在项目开发过程中我们常常需要借助第三方组件库 而ele
  • Java经典面试题整理及答案详解(一)

    简介 面试题包括java集类和设计模式 spring工作原理 动态代理 事务的控制等方面 码住 我们能赢 Java在编程语言中 占据着重要的地位 随着技术的更新与发展 越来越多的人进入互联网行业 踏上Java编程之旅 本系列内容来源于阿里云
  • leedcode

    本节只写自己做的leedcode 只是用来当笔记 里面记录的方法有自己想的 也有来自各位大神的思路 1 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果 请重建该二叉树 假设输入的前序遍历和中序遍历的结果中都不含重复的数字 例如 给出 前
  • 【华为OD机试】比赛【C++ Java Python】

    题目描述 一个有N个选手参加比赛 选手编号为1 N 3 lt N lt 100 有M 3 lt M lt 10 个评委对选手进行打分 打分规则为每个评委对选手打分 最高分10分 最低分1分 请计算得分最多的3位选手的编号 如果得分相同 则得
  • 三点“揭露”内向技术人如何做好分享?

    引言 内向的人不适合做分享 似乎有这么一个想法根植在所有人的心底 特别对于程序员这个群体 内向的人更加多了 毕竟 不内向谁当程序员呢 我当时选择程序员这个职业 就是因为不太喜欢和人打交道 但是经过这些年的实践 我逐渐发现 内向的人如果能充分
  • Windows软件:如何安装ideaIU-2020.3.3并使用无限重置插件达到永久使用

    前言 在我们做SpringBoot Java项目时 一个好的开发工具可以让我们的效率达到事半功倍 早期的eclipse已经无法满足我们日常需求 当然idea集成开发工具在很早前就已经进入市场 如今取得了无法撼动的地位 首居Java开发工具第
  • Redis学习笔记(三)——事务控制及Jedis使用

    又是一个新的周末 上周由于周末睡过头了 Redis的学习进度也慢了不少 这篇内容本该是上周应该发布的 晚了一些哈哈 这篇文章我会学习一下Redis的事务控制 可能对于初学的小伙伴来说事务控制比较难以理解 我的语言也不是很精炼 但还是希望对小
  • Mybatis学习——使用Limit分页

    Limit分页 SQL语句 语法 SELECT FROM table LIMIT stratIndex pageSize SELECT FROM table LIMIT 5 10 检索记录行 6 15 为了检索从某一个偏移量到记录集的结束所
  • NDK编译时报错: Android NDK: NDK Application 'local' targets unknown ABI(s): arm64-v8a x86_64

    网上下了一个github项目 NDK编译时报错 Android NDK NDK Application local targets unknown ABI s arm64 v8a x86 64 Android NDK Please fix
  • Intellij IDEA设置HTTP Proxy

    Intellij IDEA设置HTTP Proxy MAC版 打开Appearance Behavior gt System Settings gt Http Proxy 点选 Auto detect proxy settings gt A
  • Apache Hive+Kerberos安装配置及 Kettle(Pentaho)访问带 Kerberos 认证的 Hive的集成

    目录 1 连接 2 KDC 安装 2 1 安装 Kerberos 服务 2 2 配置 var kerberos krb5kdc kdc conf 2 3 配置 var kerberos krb5kdc kadm5 acl 2 4 配置 et
  • Java从后台重定向(redirect)到另一个项目的方法

    1 通过ModelAndView跳转 RequestMapping alipayforward public ModelAndView alipayforward HttpServletRequest req HttpServletResp
  • uview基本配置,在HubildX中如何配置uni-app相关的组件

    配置步骤 1 引入uView主JS库 在项目根目录中的main js中 引入并使用uView的JS库 注意这两行要放在import Vue之后 main js import uView from uview ui Vue use uView
  • 重心坐标

    数学中 重心坐标是由单形 如三角形或四面体等 顶点定义的坐标 重心坐标是齐次坐标的一种 设 v1 vn 是向量空间 V 中一个单形的顶点 如果 V 中某点 p 满足 那么我们称系数 1 n 是 p 关于 v1 vn 的重心坐标 这些顶点自己