我计划将Geometry对象拆分成一系列更简单的形状,并使用以下公式组合它们的质心:
该公式的数学细节可以在this Wikipedia article中找到。
注意:如果我对数学的看法不正确,请不要惊讶。我没有做过任何复杂的数学过去的三角学,我从来没有处理希腊字母。我想我很了解这个,但如果我弄错了,请告诉我。
信息性说明:gometric形状或棱镜的质心不仅仅是形状的中间。它是重心或质心。我假设Geometry对象也可以封装3D棱镜,所以我将来可能不得不考虑这一点,但是现在我只专注于2D几何。对于2D形状,您必须想象它是具有给定形状的硬纸片,并且质心将是这张纸在针上平衡的点。
我面临的第一个问题是我需要找到一种方法来将任何给定的Geometry对象精确地分割成足够简单的形状,这样这个公式就能正常工作。有没有人有任何想法如何实现这一目标?或者是否有更好的程序仍然可以普遍使用?
我面临的第二个问题是,在几何体分离之后,我该如何找到每个部分的质心?每种类型的简单形状(三角形,四边形,半圆形等)都有自己的质心公式。有没有办法让我知道每件作品的形状是什么?
答案 0 :(得分:3)
任意2D平面形状的细分或离散化是有限元分析中的常见问题。它通常用平面三角形或四边形来完成。尝试在"2d finite element mesh generation"或四叉树或八叉树网格生成上进行Google搜索。您可以计算每个简单形状的质心并应用您引用的(正确)公式。
像this之类的东西。或these。当然,你必须为有问题的身体提供原始几何体。
你还有很长的路要走。您必须执行以下所有操作:
这仍然是一项相当多的工作。
更新:This one看起来很不错,而且它是开源的。
答案 1 :(得分:0)
我没有这方面的任何代码,但我已经看到了形状被细分的位置(在这种情况下使用polygon triangulation),所以你会得到一组很好的三角形。然后根据三角形质心的加权平均值计算组合质心。
编辑:
AGI正在开发一款名为Insight3D的产品的博客。在这个entry中,他们讨论了三角测量。它可能会帮助你做到这一点,因为他们确实提供了更多关于算法的指针。根据您的使用情况,您可以重复使用one implementations。它可以免费用于开发和非商业用途。