我在畫布上繪圖,我想在兩個其他點之間得到一個點的長度。我有:通過兩點之間的長度獲取座標
let uno = {x:100, y:200};
let dos = {x: 900, y:2000};
let length = 20; //px
我怎樣才能得到UNO和DOS的距離以像素爲單位長度之間的點(從UNO開始)? 實施例的圖像中的
我在畫布上繪圖,我想在兩個其他點之間得到一個點的長度。我有:通過兩點之間的長度獲取座標
let uno = {x:100, y:200};
let dos = {x: 900, y:2000};
let length = 20; //px
我怎樣才能得到UNO和DOS的距離以像素爲單位長度之間的點(從UNO開始)? 實施例的圖像中的
使用三角學:
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];
}
這幾乎就是......只需要[xp + x1,yp + y1] –
謝謝,更正:) – Giladd
嘗試這種情況:
let uno = {x:100, y:200};
let dos = {x: 900, y:2000};
let length = 20; //px
let point = {
x: findPoint(length, uno.x, dos.x),
y: findPoint(length, uno.y, dos.y),
}
console.log(point);
function findPoint(d, a, b) {
return d * (b - a) + a;
}
基於https://math.stackexchange.com/a/1625335 ;我自己沒有測試過。
確定結果是正確的。你應該先用'uno'和'dos'之間的長度來劃分 –
@ibrahimmahrir我不是遵循你所說的話(對不起,數學不太好)。如果您可以使代碼更加智能化,請隨時編輯。 – RyanZim
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};
}
[查找線路上的點]的可能的複製(http://stackoverflow.com/questions/1934210/finding-a-point-on-a-line) – Rafael
注有數學網站堆棧交換網站的網站,其中有問題的答案:http://math.stackexchange.com/q/155514 –
可能重複[查找兩點之間的點的座標?](http:// stackoverflow。 com/questions/2886092 /發現座標點之間的兩點)這說明它是關於WPF,但它是基本的數學。 –