平移相对于线段的坐标

时间:2017-01-17 16:01:11

标签: javascript graphics transformation

我需要编写一个函数(在Javascript中),它接受一个线段的端点和一个附加点,并返回相对于起点的点的坐标。所以,根据这张图片:

enter image description here

function perpendicular_coords(x1,y1, x2,y2, xp,yp)

返回[xp',yp'],其中xp'是沿着垂直于线段的直线与(xp,yp)的距离,yp'是从(x1,y1)到垂直直线相交的点的距离线段。

到目前为止我尝试过:

function rotateRad(cx, cy, x, y, radians) {
    var cos = Math.cos(radians),
        sin = Math.sin(radians),
        nx = (cos * (x - cx)) + (sin * (y - cy)) + cx,
        ny = (cos * (y - cy)) - (sin * (x - cx)) + cy;
    return [nx, ny];
}

[xp', yp'] = rotateRad(x1,y1, xp, yp, Math.atan2(y2-y1,x2-x1));

我没有写这个功能;从https://stackoverflow.com/a/17411276/1368860获得它

1 个答案:

答案 0 :(得分:1)

我采用了不同的方法,结合了两个功能:

  1. 获得yp'我使用这里的答案找到交叉点:Perpendicular on a line from a given point
  2. 获取xp'我使用下面的公式计算(xp,yp)和线之间的距离:https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
  3. 不是最优雅的解决方案,但似乎有效。

    生成的代码https://jsfiddle.net/qke0m4mb/

    width
相关问题