2012-04-23 52 views
0

我们有一个Point3D [] - 点云。我们想找到它的中心。如何做这样的事情,这里通过中心我们的意思是几何意义?如何找到point3d数组的中心?

+1

你尝试过什么吗?你有没有尝试过寻找合适的算法? – 2012-04-23 19:41:16

+3

你想如何定义中心?重心,与其他点的最小平方距离点,算术平均值,几何平均值... – 2012-04-23 19:41:23

+0

也许你正在看边界框的中心?请定义您的中心意思,并提供例子。 – ja72 2012-04-23 19:43:41

回答

3

听起来像是你可以使用:

new Point3D(points.Average(p => p.X), 
      points.Average(p => p.Y), 
      points.Average(p => p.Z)); 
+0

请求下面的OP进行澄清。目前还不清楚他是否想要在他的问题中包围盒的质心或几何中心。 – Ani 2012-04-23 19:45:47

+0

我想知道几何意义,但在我的具体情况平均会做=)谢谢你谨慎。 – myWallJSON 2012-04-23 19:56:18

+0

从OP的[其他最近的问题]判断(http://stackoverflow.com/questions/10286555/having-an-array-of-points-that-form-a-circle-how-to-randomize-one-coordinate) ,他们正在寻找最适合的圈子的中心。一般来说,这与质心不一样。 – 2012-04-23 21:18:53

2

人能想到很多不同的中心,你要哪一个?

  1. 所有点的边界框的中心 - 您可以通过查找最小点和最大点,然后选择框的拐角来完成此操作。这个盒子的中心是(min + max)/ 2

  2. 所有点的质心这是不一样的,上面的中心见here。这个,BTW是上面Jon Skeet给出的解决方案。