我在SVG canvas中有兩條直線<path>
。使用LineA (A1x, A1y) (A2x, A2y)
和LineB的像素座標如何計算這些線條之間的角度。如何在Javascript中的SVG上找到兩條直線(路徑)之間的角度?
我有下面的代碼,它適用於三點(它適用於下圖中的綠色情況)。當(A2x, A2y) != (B1x, B1y)
不起作用。
即使線條未連接,我如何修改此公式以工作。
function find_angle(p0,p1,c) {
var p0c = Math.sqrt(Math.pow(c.x-p0.x,2)+
Math.pow(c.y-p0.y,2));
var p1c = Math.sqrt(Math.pow(c.x-p1.x,2)+
Math.pow(c.y-p1.y,2));
var p0p1 = Math.sqrt(Math.pow(p1.x-p0.x,2)+
Math.pow(p1.y-p0.y,2));
var angle = Math.acos((p1c*p1c+p0c*p0c-p0p1*p0p1)/(2*p1c*p0c));
return angle * (180/Math.PI);
}
向量在2D會給你這個答案很容易地使用或者圓點或交叉的產物。我更喜歡後者,因爲你有兩個角度可供選擇。 Cross產品允許您通過指定平面外方向來選擇哪一個。 – duffymo
無論您使用(p0,p1,c)還是(p1,p0,c)調用,您當前的函數都會給出相同的結果。那真的是你想要的嗎? –