我已经走了很远,但有些东西似乎不起作用。
A = 50.88259382849774,6.003988087177277
B = 50.88269282423443,6.0036662220954895
C = 50.882530369581545,6.003847271203995
C 坐标稍微偏离 90 度线 (x),我制作的这个函数应该将 C 定位在最接近 x 线的位置。
this.snapCoords = function(a, b, c){
var result = (b.x-a.x)*(c.x-b.x)+(b.y-a.y)*(c.y-b.y);
var negative = false;
if(result < 0){
result = result*-1;
negative = true;
}
result = Math.sqrt(result);
result = result/2;
if(negative === false){
var d = {x: c.x+result, y: c.y-result};
}
else{
var d = {x: c.x-result, y: c.y+result};
}
console.log(d); // returns : 50.88246729610898,6.003910344676565
}
它确实得到了 90 度 (x) 线,但不是最接近的方式。我的函数肯定仍然有问题,但我无法弄清楚。
编辑:
这就是我的问题
我的函数将第三个坐标放在 C 上,该坐标为 90 度,但不是它应该在的位置(红点),它以某种方式延伸到更远的点。
最佳答案
我认为OP正在尝试将点C投影到经过点B并垂直于线AB的线上。如果是这种情况,则投影的数学计算不正确。可以找到投影点D为
D= C - 点(vec(BC), vec(AB)) * vec(AB)/|vec(AB)|^2
通过此计算,投影点 D 将为 (50.8825952820492, 6.00363622113846)。
以下是A、B、C、D点的图片:
关于javascript - 寻找最近的 90 度 Angular 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251745/