最近我试图解决一个小的人工智能问题,但由于找不到各种物体的质量中心而陷入了困境。
我想知道你们中是否有人能帮我解决这个问题。
问题解释:假设我有一个二维物体,它的形状非常不规则,并且整个物体的质量分布是均匀的就像身体是由每一个单位质量的“n”个微粒组成,因此虽然身体的形状非常不规则,但质量分布是均匀的我如何确定这个物体的质心或重心?
阿凡尼!!

最佳答案

好啊。我现在明白了你有大量的离散粒子要处理。重点放在大数字上。
你为什么不说?
你不能精确地(也就是说,没有近似地)完成,而不是迭代所有的点。至少在没有提供更多相关信息的情况下是这样。
如果您对数据有随机访问,则是获得近似值的好方法。
对于单个操作来说,另一种方法不会更快,但如果需要经常重新计算,则可能有用,那就是将工作集减少到一组较小的较重点像这样的:
将空间划分为一个由N_x * N_y * N_z个大小为(l_x,l_y,L_z)的单元格组成的网格。
计算每个单元中所有点的总质量和质心位置。
丢弃不包含任何点的单元格,并将结果用作新的工作集。
为了让这代表一种改进,您需要每个单元格平均有10个或更多的原始点,但不要太多,以至于引入的宏伟会冲掉您正在寻找的信号。
如何最好地执行步骤2取决于原始数据是如何组织的,取决于您在内存中有多少空间来存储中间结果。有大量可用内存:
准备并初始化为零四个(n_x,n_y,n_z)数组,称为MRxRyRz(或一个标量数组M和一个矢量数组R,这取决于您的实现语言)
按时浏览主列表,为每个质量递增相应单元格中的值
遍历中间数组以计算收集的质量和位置。
内存相对较少,但有大量的时间用于预计算,因此您可以为每个单元格遍历一次主列表(但如果您有这样的时间,您可能只需直接执行此操作)。

关于algorithm - 如何找到质量分布均匀的不规则物体的重心或质心?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2163455/

10-13 00:06