Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get coordinate by length between two points

I am drawing on canvas and I want to get a point by length between two other points. I have:

let uno = {x:100, y:200};
let dos = {x: 900, y:2000};
let length = 20; //px

How can I get point between uno and dos by distance in pixels length (starting from uno)? Example image in the

attachment

like image 970
Jimi Alvaro Avatar asked Jan 18 '17 21:01

Jimi Alvaro


2 Answers

Using trigonometry:

function lenpoint(x1, y1, x2, y2, len) {
  var dx = x2-x1, 
      dy = y2-y1;
  var theta = Math.atan2(dy, dx);
  var xp = len * Math.cos(theta), 
      yp = len * Math.sin(theta);
  return [xp + x1, yp + y1];
}
like image 66
Giladd Avatar answered Oct 22 '22 08:10

Giladd


function getCoordinateByLength(point1, point2, length){
    var dx = point2.x - point1.x;
    var dy = point2.y - point1.y;
    var distance = Math.sqrt(dx * dx + dy * dy);
    if(distance == 0)
        return {x: point1.x, y: point1.y};

    var rx = point1.x + (point2.x - point1.x) * length / distance;
    var ry = point1.y + (point2.y - point1.y) * length / distance;
    return {x: rx, y: ry};
}
like image 22
ibrahim mahrir Avatar answered Oct 22 '22 07:10

ibrahim mahrir