2013-02-17 64 views
1

我一直在使用JavaScript來編寫一個畫線系統。我希望繪製的線條可以選擇,所以我一直在嘗試實現線條高亮。正如你在下面的圖片中看到的,我有一條帶有已知座標和斜率截距(y = mx + b)的方程(黑色)。如何知道盒子的半徑,我怎樣才能計算出角點(用綠色圈起來)?獲取行圍框的座標

line box example

回答

1

這是最簡單的向量的角度考慮的。

通過在該行作爲A的端部限定的點開始斷,而另一端作爲B

var A = new Vector(1, 1) 
var B = new Vector(5, 3) 

現在找到線的單位方向矢量(長度爲1指示的來自A的矢量到B),和它的垂直:

var dir = B.minus(A).normalize(); 
var dir_perp = new Vector(dir.y, -dir.x) 

和擴展他們是長度thickness的:

dir = dir.times(thickness); 
dir_perp = dir_perp.times(thickness) 

四個角則:

[ 
    A.minus(dir).plus(dir_perp), 
    A.minus(dir).minus(dir_perp), 
    B.plus(dir).minus(dir_perp), 
    B.plus(dir).plus(dir_perp) 
] 

顯然,這假設你有某種矢量數學庫。 Here's one I made earlier

+0

非常感謝。矢量圖庫也非常完美! :) – Harangue 2013-02-17 22:33:42

+0

@ J4G:我不保證該項目中其他文件的語法或數學有效性,但我很確定'vector.js'是正確的。 – Eric 2013-02-17 22:40:05