javascript - 寻找最近的 90 度 Angular 点

标签 javascript math coordinates coordinate-systems

我已经走了很远,但有些东西似乎不起作用。

enter image description here

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) 线,但不是最接近的方式。我的函数肯定仍然有问题,但我无法弄清楚。

编辑:

这就是我的问题

enter image description here

我的函数将第三个坐标放在 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点的图片:
Pict1

关于javascript - 寻找最近的 90 度 Angular 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251745/

相关文章:

javascript - 为什么我的下拉菜单把下面的主要链接都和 sibling 一起移了?

javascript - 我如何能够为每秒更改文本的 javascript 添加计时?

windows - 如何从批处理文件中显示十六进制整数?

math - 二维空间三角形碰撞检测

javascript - 如何在 PhoneGap 中使用 Magento API Soap Web 服务

javascript - iframe src 取决于设备宽度

regex - 创建一个正则表达式以将两个数字相加

r - 查找多个点之间的最短距离

matrix - 在Mathematica中将坐标系转换为矩阵

mysql - 从 MySQL 中东北和西南坐标的边界框内的数据库中获取所有点