I need to write a function (in Javascript) that accepts the endpoints of a line segment and an additional point and returns coordinates for the point relative to the start point. So, based on this picture:
function perpendicular_coords(x1,y1, x2,y2, xp,yp)
returns [xp',yp']
where xp' is the distance from (xp,yp) along a line perpendicular to the line segment, and yp' is the distance from (x1,y1) to the point where that perpendicular line intersects the line segment.
What I've tried so far:
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));
I didn't write the function; got it from https://stackoverflow.com/a/17411276/1368860
I took a different approach, by combining two functions:
Not the most elegant solution, but it seems to work.
Resulting code https://jsfiddle.net/qke0m4mb/