【问题标题】:Exact formulae for the area of polygons and volume of polyhedrals多边形面积和多面体体积的精确公式
【发布时间】:2023-03-26 14:40:01
【问题描述】:

我想计算一个随机多边形的面积和一个随机多面体的体积。谷歌搜索让我找到了曲面细分和蒙特卡洛方法。但是,我只对精确计算感兴趣,而不是通过收敛进行近似。可能有人熟记确切的公式,或者有指向描述此类公式的页面的链接?

这些公式不需要应用于奇异的多边形或多面体。如果它们适用于 simple(不相交的边缘)convex 形状,我已经很满意了。除了可以按特定顺序排列的顶点坐标列表[(x1, y1), ..., (xn, yn)][(x1, y1, z1), ..., (xn, yn, zn)] 之外,我不想使用其他任何东西。

我能够阅读FortranC/C++PythonMATLAB。因此,用这些语言中的任何一种或用伪代码编写的算法都受到好评。

【问题讨论】:

  • 我没有给你的代码,但鉴于形状是“简单而凸的”,你可以选择一个顶点,然后找到循环穿过其他顶点时形成的所有三角形的面积...
  • 对于简单的多面体,您必须使用行列式公式细分并计算四面体的体积。多边形也一样(镶嵌并使用叉积的范数来计算三角形的面积)

标签: c++ python matlab polygon polyhedra


【解决方案1】:

对于简单的多边形,您可以使用 Green-Riemann 公式,如下所述:http://www.math.unl.edu/~mbrittenham2/classwk/208s04/inclass/areas_of_polygons.pdf

这相当于对三角形 M_iOM_j 的(代数)面积求和,以 O 为原点(或任何点),如果角度 BOA 为正,则三角形 BOA 的代数面积为正。

对于 polyedras,您可以使用 Ostrogradski 的公式来概括上述内容。参见例如。那里:http://en.wikipedia.org/wiki/Polyhedron#Volume

您可以在此处找到对上述计算量方法的评论:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.3873&rep=rep1&type=pdf

【讨论】:

  • 我阅读了您的第一个多边形链接。太棒了,这正是我想要的。我现在要阅读你的第二个多面体链接。
  • 我阅读了您关于多面体的第二个链接。我了解该方法,但是我需要进行一些后续阅读:确定人脸的质心和人脸的法线向量。我的旧微积分书要尘埃落定;)
  • @Aeronaelius:对于三角形面,找到质心很容易:只需平均顶点即可。法向量由两条边的叉积给出。
  • 是的,找到一个法线向量非常容易。但在 3D 空间中,法线向量可以指向两种方式。在考虑凸多面体时,如何明确确定面的向外指向法向量?
  • @Aeronaelius:您必须以正确的顺序列出顶点,以便边的叉积具有正确的方向。见en.wikipedia.org/wiki/Cross_product
猜你喜欢
  • 2010-12-22
  • 2013-12-08
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 2015-04-23
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多