我创建了一个全景图,中间有一个指南针,最初指南针指向图像的顶部中心。
现在我想相对于这一点移动指南针,因为它是 360 度全景图,它会创建一个相邻的副本。所以我想要的是将指南针指向您从左到右或从右到左移动时距离较近的那个点。
这是我到目前为止所做的,这并不像我想要的那样。
所以这里是代码:https://gist.github.com/joeyhipolito/8678bf35dba7795de4d5
我所做的是创建了两个点:
points.push({
x: target.offset().left + (windowWidth) / 2,
y: target.offset().top
});
points.push({
x: (target.offset().left + (windowWidth) / 2) + (common.width / 2),
y: target.offset().top
});
然后尝试通过勾股定理计算哪些点更接近引用
var closestPoint = points[0];
var closestValue = Math.sqrt(Math.pow(points[0].x, 2) + Math.pow(points[0].y, 2));
for (var i = 1; i >= points.length; i++) {
var z = Math.sqrt(Math.pow(points[i].x, 2) + Math.pow(points[i].y, 2));
if(z < closestValue) {
closestPoint = points[i];
closestValue = z;
}
};
你认为我错过了什么?
最佳答案
您似乎对 for 循环的控制有问题。这个循环:
for (var i = 1; i >= points.length; i++) {
};
(注意退出条件)不会运行,因为 1(i
的初始值)紧挨着数组的长度,大概至少为 2。另一方面,如果数组length 最多为 1,则此循环将永远不会终止,因为 i
将不断增加,并且 i>=length
语句保持为真。
您可能想将该退出条件更改为 i<=length,那么最小值查找逻辑应该没问题。
关于javascript - 从特定点计算最近的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29025662/