Tag: 质心

定位球形多边形的质心(质心)

我正在试图找出如何最好地定位覆盖在单位球面上的任意形状的质心,input顺序(顺时针或反cw)顶点的形状边界。 顶点的密度沿着边界是不规则的,所以它们之间的弧长一般是不相等的。 由于形状可能非常大(半个半球),所以通常不可能简单地将顶点投影到平面上,并使用平面方法,详见维基百科(对不起,我不允许超过2个超链接作为新手)。 稍微好一点的方法是使用在球坐标系中操作的平面几何graphics,但是如果使用大的多边形,这种方法也会失败,正如这里很好地说明的那样。 在同一页上,“Cffk”突出介绍了一种计算球形三angular形质心的方法。 我试图实现这个方法,但没有成功,我希望有人可以发现这个问题? 我已经将variables的定义与文件中的类似,以便于比较。 input(数据)是经度/纬度坐标列表,由代码转换为[x,y,z]坐标。 对于每个三angular形,我已经任意固定一个点作为+ z极点,其他两个顶点由沿着多边形边界的一对相邻点组成。 代码沿边界步进(从任意点开始),依次使用多边形的每个边界段作为三angular形边。 为每个这些单独的球形三angular形确定一个子质心,并根据三angular形面积对它们进行加权,并将其相加以计算总的多边形质心。 运行代码时我没有遇到任何错误,但返回的总质心显然是错误的(我已经运行了质心位置明确的一些非常基本的形状)。 我还没有find任何明智的模式,在重心的位置返回…所以目前我不知道什么是错误的,无论是在math或代码(虽然,怀疑是math)。 下面的代码应该工作原样复制粘贴,如果你想尝试。 如果你已经安装了matplotlib和numpy,它会绘制结果(如果你不这样做,它将忽略绘图)。 您只需要将代码下方的经度/纬度数据放入一个名为example.txt的文本文件中即可。 from math import * try: import matplotlib as mpl import matplotlib.pyplot from mpl_toolkits.mplot3d import Axes3D import numpy plotting_enabled = True except ImportError: plotting_enabled = False def sph_car(point): if len(point) == 2: point.append(1.0) rlon = radians(float(point[0])) rlat = radians(float(point[1])) […]