2009-11-30 57 views
2

在JavaScript中,我試圖繪製一條以用戶定義的角度繪製的線條。從一個點和一個角度獲得斜率

基本上,我有一個點(x,y)和一個角度來創建下一個點。該行的長度需要爲10px。 (180,200)...如果我給它一個角度「A」,並且(我猜)斜邊是10,那麼我的方程是什麼以獲得X和Y的斜率?

感謝您的幫助!

+3

sohcahtoa sohcahtoa sohcahtoa – Nosredna 2009-11-30 18:14:48

+1

一些老嬉皮捕捉到另一個嬉皮士在酸性上跳動 – 2009-12-30 17:01:45

回答

2

假設H =斜邊(在你的榜樣10),這是你的斜率公式:

Y2 = H(Sin(A)) + Y1 
    = 10(Sin(A)) + 200 

X2 = Sqrt((H^2)-(Y2^2)) + X1 
    = Sqrt(100 - (Y2^2)) + 180 

所以,現在你已經有了

(180, 200) -> (X2, Y2) 

其中X2,Y2將根據變化在A和H的值上

檢查我們的計算-A(由用戶輸入)可以使用斜率方程計算,用原始輸入代替X1,X2,Y1和Y2值,而r導致輸出。

A = InvTan((Y2 - Y1)/(X2 - X1)) 
    = InvTan((Y2 - 200)/(X2 - 180)) 
6

井,從基礎三角學...

罪A°= Y/10

COS A°= X/10

10^2 = Y^2 + X^2

+1

或者,cosA = X/10來解決X. Upvoted爲唯一的人實際提供答案。 – 2009-11-30 18:09:56

+0

歡呼聲sid - 和帽子尖爲cos :) – flesh 2009-11-30 18:11:29

+0

確實;有時候人們會忘記這是一個問答網站而不是論壇。 – 2009-11-30 18:12:50

3

由於多伊爾先生snarkily暗示,數學並不難,但:

1)確保您清楚什麼樣的角度參考,你的座標,去什麼方向;大多數簡單的觸發器事件假定您正在處理傳統的笛卡爾座標,x向右增加,y增加頁面,而大多數繪製api的y增加,頁面增加,x增加到右側。

2)確保您瞭解數學函數是否需要度數或弧度併爲它們提供適當的參數。

+0

是的。沒有足夠的信息給出。座標系統需要關於0角度指向哪個方向以及哪個方向的信息。 – Nosredna 2009-11-30 18:17:44

1