3D多边形的中心点计算

476

我正在尝试计算平面多边形的中心,并想知道解决此问题的最佳方法是什么。

我可以访问形成多边形的顶点,但是没有其他权限。

有人对如何解决这个问题有任何建议吗?

谢谢。

最好的祝福

我不会投影到2D。

重心

顶点的质心

将所有顶点的坐标求和,然后除以顶点数。请参阅有限点集的质心

sx = sy = sz = 0
for i in 1..n:
    sx = sx + px[i]
    sy = sy + py[i]
    sz = sz + pz[i]
cx = sx/n
cy = sy/n
cz = sz/n

边缘的质心

将所有边的中心求和,再乘以这些边的长度加权,然后除以总周长。

sx = sy = sz = slen = 0
x1 = px[n]
y1 = py[n]
z1 = pz[n]
for i in 1..n:
    x2 = px[i]
    y2 = py[i]
    z2 = pz[i]
    dx = x2 - x1
    dy = y2 - y1
    dz = z2 - z1
    len = sqrt(dx*dx + dy*dy + dz*dz)
    sx = sx + (x1 + x2)/2*len
    sy = sy + (y1 + y2)/2*len
    sz = sz + (z1 + z2)/2*len
    slen = slen + len
    x1 = x2
    y1 = y2
    z1 = z2
cx = sx/slen
cy = sy/slen
cz = sz/slen

表面质心

对多边形进行三角剖分,然后对所有三角形的质心求和,按其面积加权,然后除以总面积。您可以选择并非所有三角形都完全位于多边形内的三角剖分,只要外部区域由不同方向的三角形补偿即可。三角形的面积是其两个边缘向量的叉积的一半。

对于2D情况,请参见多边形的质心,但对于使用区域的此方法,更合适的是通过几何分解的质心另请参见三角形的质心,因为三角形表面的质心等于其顶点的质心。

sx = sy = sz = sarea = 0
x1 = px[1]
y1 = py[1]
z1 = pz[1]
x2 = px[2]
y2 = py[2]
z2 = pz[2]
for i in 3..n:
    x3 = px[i]
    y3 = py[i]
    z3 = pz[i]
    dx1 = x3 - x1
    dy1 = y3 - y1
    dz1 = z3 - z1
    dx2 = x3 - x2
    dy2 = y3 - y2
    dz2 = z3 - z2
    cpx = dy1*dz2 - dz1*dy2
    cpy = dz1*dx2 - dx1*dz2
    cpz = dx1*dy2 - dy1*dx2
    area = sqrt(cpx*cpx + cpy*cpy + cpz*cpz)/2
    sx = sx + (x1 + x2 + x3)/3*area
    sy = sy + (y1 + y2 + y3)/3*area
    sz = sz + (z1 + z2 + z3)/3*area
    sarea = sarea + area
cx = sx/sarea
cy = sy/sarea
cz = sz/sarea

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

围绕中心点绘制多边形

来自分类Dev

如何计算3D多边形的内角?

来自分类Dev

如何在现代openGL中用3D点绘制多边形?

来自分类Dev

使用Newell算法计算3d多边形的面法线的问题

来自分类Dev

用一个顶点的中心点、半径和坐标绘制n边正多边形

来自分类Dev

在Python 3中绘制3D多边形

来自分类Dev

在Python 3中绘制3D多边形

来自分类Dev

计算多边形内的折线的点

来自分类Dev

线与凹多边形3D的交点

来自分类Dev

如何从 geojson 文件中获取多边形的坐标并从中挤出 3D 多边形?

来自分类Dev

如何计算5点多边形中的点

来自分类Dev

将点连接到3D散点图Python的中心点

来自分类Dev

计算多边形列表的整个重心/几何中心

来自分类Dev

多边形的点公式

来自分类Dev

多边形的点公式

来自分类Dev

将3个多边形一起放置在3D中

来自分类Dev

将3个多边形一起放置在3D中

来自分类Dev

Boost :: Geometry-在3D空间中查找2D多边形的区域?

来自分类Dev

从3D对象获取2D凹面多边形

来自分类Dev

使用leaflet-pip和d3.geo包含多边形中的点

来自分类Dev

boost :: geometry 3D多边形交集编译错误

来自分类Dev

使用C ++在OpenGL中纹理3d多边形

来自分类Dev

使用C ++在OpenGL中移动自动旋转的3d多边形

来自分类Dev

合并以特定顺序排列的相邻3D多边形

来自分类Dev

在Python中绘制3D多边形的图形错误

来自分类Dev

使用顶点数组绘制3D多边形

来自分类Dev

在3D空间中对非平面多边形进行三角剖分

来自分类Dev

如何有效地确定3D空间中多边形的法线?

来自分类Dev

3D 几何表示中的 Brep 和多边形网格有什么区别?