Javascript 如何在n点中点找到一个点?
假设有N个点由它们的坐标(X,Y)定义。我怎么能找到另一个点X的坐标,这是在n个点的中间(即x和每个点之间的距离n是或多或少相等)。有什么算法可以做到这一点吗 可能没有这一点。你可以对XS和Ys进行平均,得到中间点(A.K.A“质心”)。 < P> 2点,这个“中间”存在。至于更多,我们不能确定 可以使用点的平均x和y计算质心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
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可能还未达到高中年龄或没有接受过正规教育。那不是劝阻他的理由。