Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在n点中点找到一个点?_Javascript_Algorithm - Fatal编程技术网

Javascript 如何在n点中点找到一个点?

Javascript 如何在n点中点找到一个点?,javascript,algorithm,Javascript,Algorithm,假设有N个点由它们的坐标(X,Y)定义。我怎么能找到另一个点X的坐标,这是在n个点的中间(即x和每个点之间的距离n是或多或少相等)。有什么算法可以做到这一点吗 可能没有这一点。你可以对XS和Ys进行平均,得到中间点(A.K.A“质心”)。 < P> 2点,这个“中间”存在。至于更多,我们不能确定 可以使用点的平均x和y计算质心 if (points.length > 0) { var x_acc = 0; var y_acc = 0; for (var i = 0; i &l

假设有N个点由它们的坐标(X,Y)定义。我怎么能找到另一个点X的坐标,这是在n个点的中间(即x和每个点之间的距离n是或多或少相等)。有什么算法可以做到这一点吗

可能没有这一点。你可以对XS和Ys进行平均,得到中间点(A.K.A“质心”)。

< P> 2点,这个“中间”存在。至于更多,我们不能确定

可以使用点的平均x和y计算质心

if (points.length > 0) {
  var x_acc = 0;
  var y_acc = 0;

  for (var i = 0; i < points.length; i++) {
    x_acc += points[i].x;
    y_acc += points[i].y;
  }

  var centroid_x = x_acc / points.length;
  var centroid_y = y_acc / points.length;
}
if(points.length>0){
var x_acc=0;
var y_acc=0;
对于(变量i=0;i
您可能错误地表述了这个问题,因为您认为“中间”的一点与所有其他点的距离相等

由于无法实现这一点,更好的方法是最小化中心到N个点的总欧几里德距离

事实证明,这个问题没有简单的解析解,因为您需要最小化

D = Σ √(X - Xc)² + (Y - Yc)²
在Xc上推导,得到

D'x = Σ (X - Xc) / √(X - Xc)² + (Y - Yc)² = 0
复杂的非线性表达式。这个问题被称为“几何中值”,你会发现更多信息(特别是Weiszfeld算法)

相反,最小化平方距离之和

D = Σ (X - Xc)² + (Y - Yc)²
是微不足道的

D'x = 2 Σ (X - Xc) = 0
由此产生质心

Xc = Σ X / N, Yc = Σ Y / N.


您还可以考虑点的中间点,即给定集合中的点,该点使到其他点的距离之和最小化。需要
N(N-1)/2
距离计算才能找到它。

投票人能解释一下吗?这与编程和/或javascript有什么关系@YvesDaoust,我怀疑被否决是因为“任何算法”都会“尖叫”出“有图书馆吗……[等等]”@MarcB OP可能还未达到高中年龄或没有接受过正规教育。那不是劝阻他的理由。