如何计算具有三角形面的网格的质心?

2024-02-09

我想根据以下描述计算网格的新质心。但我不想使用 Blender 的内置函数来计算质心,如所解释的here https://blender.stackexchange.com/questions/14294/how-to-recenter-an-objects-origin因为它们似乎没有给我我期望得到的那种质心。首先,我想计算网格的网格质心的面(三角形)的中心。然后我需要计算面部面积。新的质心是网格面中心的平均值,按其面积加权。我如何在 Python 中执行此操作(但不一定使用 Blender 的 Python API)?


请注意,Spektre 的答案给出了表面积网格的形状,这可能就是您想要的。

如果你想要网格的中心volume相反(就像假设密度恒定的质心),您需要执行以下操作:

  1. 使用三角形的 3 个顶点加上原点,从每个三角形创建一个四面体。
  2. 计算每个四面体的有符号体积和中心
  3. 将体积和体积加权中心相加
  4. 通过将体积加权中心之和除以总体积来获取网格中心

伪代码:

meshVolume = 0
temp = (0,0,0)

for each triangle in mesh (with vertices v1, v2, v3)
  center = (v1 + v2 + v3) / 4          // center of tetrahedron
  volume = dot(v1, cross(v2, v3)) / 6  // signed volume of tetrahedron
  meshVolume += volume
  temp = center * volume

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

如何计算具有三角形面的网格的质心? 的相关文章

  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 如何在 Visual Basic DLL 和 C++ DLL 之间创建隔离/免注册 COM?

    我必须在 C DLL 中使用 VB COM DLL 我弄清楚了如何从 C DLL 访问 VB COM DLL 并且它可以工作 现在我遇到了一个问题 我必须使用隔离的 COM 免注册 COM 因为我无法在必须使用它的每台 PC 上注册 DLL
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • Django admin.py 未知命令:'collectstatic'

    我已经从 django 1 2 7 升级到 django 1 5 1我正在使用 python 2 6 6当我尝试跑步时python manage py collectstatic i get 未知命令 collectstatic 从我的设置
  • django 南迁移,不设置默认值

    我使用 South 来迁移我的 Django 模型 然而 南方有一个令人讨厌的错误 它不会在 Postgres 数据库中设置默认值 例子 created at models DateTimeField default datetime no
  • (venv) (base) 都在 python 项目上活跃,我如何只进入 venv?

    所以我将 vscode 与 conda 对于 django 项目 一起使用 并尝试激活名为 venv 的虚拟环境 它来自 base C Users User Desktop pfa master pfa master venv Script
  • 访问 Scrapy 内的 django 模型

    是否可以在 Scrapy 管道内访问我的 django 模型 以便我可以将抓取的数据直接保存到我的模型中 我见过this https scrapy readthedocs org en latest topics djangoitem ht
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • Spark (Python) 中的 Kolmogorov Smirnov 测试不起作用?

    我正在 Python Spark ml 中进行正态性测试 看到了我的结果think是一个错误 这是设置 我有一个标准化的数据集 范围 1 到 1 当我做直方图时 我可以清楚地看到数据不正常 gt gt gt prices norm hist
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何在Python中显示坐标网格线的变换?

    假设我有常规的笛卡尔坐标系 x y 并且我考虑一个矩形网格区域 D 分成小方块 我想看看域 D 如何在 Python 中的坐标变换 T x y gt u x y v x y 下映射 我正在寻找这样的东西 See here https mat
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • Pandas:如何删除以 nan 作为列名的多个列?

    根据标题 这是一个可重现的示例 raw data x this that this that this np nan np nan np nan np nan np nan np nan y np nan np nan np nan np
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • 如果没有 std::contigious_iterator_tag,如何检测连续迭代器?

    C 17引入了ContigeousIterator的概念http en cppreference com w cpp iterator http en cppreference com w cpp iterator 但似乎并没有计划cont
  • 是否可以在我自己的服务器上托管电报?

    Telegram https telegram org 是一种基于云的聊天服务 他们所有的客户端都是开源的 我想知道是否有办法在我自己的服务器上托管 私人 电报服务 如果没有 是否有任何东西可以提供 telegram 提供的所有或几乎所有功
  • 如何调整 pub 包“flutter_native_splash”中的图像大小?

    我正在使用 flutter native splash 1 3 1 包向应用程序添加启动屏幕 显示的图像尺寸大于启动屏幕上所需的尺寸 减小启动屏幕上图像大小的正确方法是什么 不幸的是 我认为你做不到 因此 选项是调整图像大小以适合您的屏幕
  • Visual Studio 中 F10 和 F11 键有什么区别?

    I m new in C I hit a breakpoint and pressed F10 or F11 应该使用哪个键进行编译 请帮帮我 你能解释一下这个键的作用吗 F10 step over does not descend any
  • 模拟真实的鼠标点击

    我想做的是在 YouTube 上执行鼠标单击 在页面加载时按播放键 如何单击该特定位置 假设它始终位于同一位置 我尝试过但失败了 var e document getElementById myelem e click var e new
  • 在 Electron 中禁用网络

    电子 js https electronjs org 是一个用户界面工具包 允许 Web 应用程序作为任意 GUI 运行 然而 有一些应用程序应该被视为敏感 例如 银行业的 GUI 应该有强有力的保证 确保它不会做任何恶作剧 我想知道电子
  • 接收和旋转字符的函数 - 凯撒密码

    我正在尝试创建一个函数 rotate character char rot 接收一个字符 char 长度为 1 的字符串 和一个整数 rot 该函数应返回一个长度为 1 的新字符串 这是将 char 向右旋转 rot 个位数的结果 因此 输
  • 选择小数点后 4 位以上的数字

    我有一个 SQL 表 其中有一个浮点列 其中填充了如下值 1 4313 3 35 2 55467 6 22456 3 325 我需要选择仅包含小数点后 4 位以上的值的行 在这种情况下 选择必须返回 2 55467 6 22456 有想法吗
  • 在 H5PY 中打开文件时出错(未找到文件签名)

    我一直在使用以下代码来打开一些 HDF5 文件 这些文件是在 MATLAB 中使用 H5PY 在 python 中生成的 import h5py as h5 data dataset mat f h5 File data r 但是我收到以下
  • 更大的运算符“">”是否满足严格的弱排序?

    定义 Let lt 是一个二元关系 其中a lt b means a小于b Let gt 是一个二元关系 其中a gt b means a大于b 所以 我们假设 lt and gt 具有我们在日常生活中通常使用的含义 不过 在某些编程语言
  • 有人可以解密这个javascript吗

    我在一个论坛中找到它 告诉我这段代码可以让我自动玩 Facebook 游戏 但我担心这不是他们所说的 我担心这是恶意脚本 请帮忙 javascript var 0x8dd5 x73 x72 x63 x73 x63 x72 x69 x70 x
  • 将 .db 文件导入 R

    我正在尝试使用下面的代码导入 db 文件 该代码与包的示例相同 并且显示找不到函数 有人知道如何导入 db 文件吗 library ProjectTemplate db reader c3 db Users xxx Documents c3
  • 在 Startup.cs .net core 2.1 中加载程序集

    我在名为 nuqkgs 的文件夹中有块包 在项目启动时我想将这些包 有 dll 加载到项目中以在运行时使用 我使用下面的代码来加载它们 当我调试时 我可以看到信息 并且找到并打开了 dll 但是当应该使用它们时 我收到错误 找不到 dll
  • TEdgeBrowser 模态打印对话框?

    TEdge浏览器有替换了 TWebBrowser https docwiki embarcadero com RADStudio Alexandria en Using TEdgeBrowser Component and Changes
  • 更改默认图标工具栏(传单)

    我如何将默认工具栏图标更改为传单上的其他图标 上面的图片显示了图标的默认视图 我想自定义图标并将其更改为其他图标 例如我希望第一个图标看起来像桥梁和第二个文本图标等等 我已经尝试了几种方法但没有成功 这是我的代码 var electricp
  • 在 lapply 函数中访问和保留列表名称

    我需要访问 lapply 函数内的列表名称 我在网上找到了一些线程 据说我应该迭代列表的名称 以便能够获取函数中的每个列表元素名称 gt n names mylist gt mynewlist lapply n function namei
  • 在另一个视图控制器中更改标签的文本

    我有一个名为 FirstViewController 的视图控制器 还有一个名为 SecondViewController 的视图控制器 我提出第二个视图控制器 UIViewController controller self storyb
  • 在 C 中声明和修改字符串

    我最近开始尝试学习C语言 在我的第一个程序 简单的 hello world 事情 中 在我意识到我不能这样做之后 我遇到了声明字符串的不同方法variable name string data char variable name data
  • Solr 和 MySQL,如何保持更新的索引,以及,如果很简单,是否还需要数据库?

    我是 Solr 的初学者 所以请耐心等待 在我当前的项目中 我有一个非常简单的数据库 只有 1 个表 其中包含 4 个字段 id name subject msg 据我了解 每次添加 或删除 新记录时 我都需要将该记录添加到索引中 本质上执
  • 如何计算具有三角形面的网格的质心?

    我想根据以下描述计算网格的新质心 但我不想使用 Blender 的内置函数来计算质心 如所解释的here https blender stackexchange com questions 14294 how to recenter an