基于 x 值和 y 值的不同点之间的最大距离?
Biggest distance between different points based on x-values and y-values?
我得到了一堆存储在数组 arr
中的节点。
每个节点都有一个 x 和 y 值,代表屏幕上的位置。
现在,我创建了 arr
的中间元素并将其保存在 middle
中。
现在,我的目标是找出 middle
与所有其他节点之间的距离,并找出距离最大的节点。对于距离,我使用毕达哥拉斯定理 a^2 + b^2 = c^2
,这意味着 sqrt(a^2 + b^2) = c
或在我的例子中 sqrt(x^2 + y^2) = distance between 2 nodes
。
例如,为了创建 (10,10)
和 (20,30)
之间的距离,我创建了 x 尺度和 y 尺度的差异,这意味着 x = 20-10 = 10
和 y = 30-10 = 20
.结果是,这些节点之间的距离是 sqrt( 10^2 + 20^2) = 22,3.
在我的代码中,我检查了 if-loop
,哪个 x 值和 y 值更大以避免负值。但是我做的东西是错误的。也许有人可以帮忙?
var middle = arr[Math.floor(arr.length / 2)];
var arrayForDistance = [];
var distance = [];
for(i = 0; i != arr[middle] & i< arr.length; i++ ) {
if(arr[i].x > arr[middle].x) {
var newX = arr[i].x - arr[middle].x;
var newY = arr[i].y - arr[middle].y;
}
else if ( arr[i].x < arr[middle].x)
{
var newX = arr[middle].x - arr[i].x;
var newY = arr[middle].y - arr[i].y;
}}
distance = sqrt( newX^2 + newY^2)
arrayForDistance.push(distance[i]);
}
var maxDistance = Math.max.apply(null, arrayForDistance)
首先,您不必担心负数,因为您正在对它们进行平方,它们会抵消。
其次你的for循环是错误的它应该是
var middle = arr[Math.floor(arr.length / 2)];
var arrayForDistance = [];
var distance ;
for(i = 0; i< arr.length; i++ ) {
if (i != Math.floor(arr.length / 2)){
var newX = arr[i].x - arr[middle].x;
var newY = arr[i].y - arr[middle].y;
distance = sqrt( newX^2 + newY^2)
arrayForDistance.push(distance);
}
}
var maxDistance = Math.max.apply(null, arrayForDistance)
我得到了一堆存储在数组 arr
中的节点。
每个节点都有一个 x 和 y 值,代表屏幕上的位置。
现在,我创建了 arr
的中间元素并将其保存在 middle
中。
现在,我的目标是找出 middle
与所有其他节点之间的距离,并找出距离最大的节点。对于距离,我使用毕达哥拉斯定理 a^2 + b^2 = c^2
,这意味着 sqrt(a^2 + b^2) = c
或在我的例子中 sqrt(x^2 + y^2) = distance between 2 nodes
。
例如,为了创建 (10,10)
和 (20,30)
之间的距离,我创建了 x 尺度和 y 尺度的差异,这意味着 x = 20-10 = 10
和 y = 30-10 = 20
.结果是,这些节点之间的距离是 sqrt( 10^2 + 20^2) = 22,3.
在我的代码中,我检查了 if-loop
,哪个 x 值和 y 值更大以避免负值。但是我做的东西是错误的。也许有人可以帮忙?
var middle = arr[Math.floor(arr.length / 2)];
var arrayForDistance = [];
var distance = [];
for(i = 0; i != arr[middle] & i< arr.length; i++ ) {
if(arr[i].x > arr[middle].x) {
var newX = arr[i].x - arr[middle].x;
var newY = arr[i].y - arr[middle].y;
}
else if ( arr[i].x < arr[middle].x)
{
var newX = arr[middle].x - arr[i].x;
var newY = arr[middle].y - arr[i].y;
}}
distance = sqrt( newX^2 + newY^2)
arrayForDistance.push(distance[i]);
}
var maxDistance = Math.max.apply(null, arrayForDistance)
首先,您不必担心负数,因为您正在对它们进行平方,它们会抵消。
其次你的for循环是错误的它应该是
var middle = arr[Math.floor(arr.length / 2)];
var arrayForDistance = [];
var distance ;
for(i = 0; i< arr.length; i++ ) {
if (i != Math.floor(arr.length / 2)){
var newX = arr[i].x - arr[middle].x;
var newY = arr[i].y - arr[middle].y;
distance = sqrt( newX^2 + newY^2)
arrayForDistance.push(distance);
}
}
var maxDistance = Math.max.apply(null, arrayForDistance)