2014-02-21 40 views
0

在這Fiddle你可以看到我的實現。鼠標作爲消失點

它基本上起作用,但有一些地方的角度突然變化,並不平穩。玩你的鼠標,並找出。 (當鼠標的X位置在消失線的X位置附近時)。我也不明白爲什麼消失的線不會跟着鼠標超過45°。

lineRad = Math.asin(Math.sin(vertDist/mouseLineDist)); 

lineRad = (mouseX - lineX) >= 0 ? lineRad : -lineRad + Math.PI; 
lineRad = (mouseY - lineY) >= 0 ? lineRad : -lineRad; 

這可能是跳躍的起源,但我不確定。

我剛在Firefox下檢查了這個。它似乎有重大的性能問題。 所以這個原型在Chrome中運行。任何有關性能和瀏覽器兼容性的建議也令人讚賞。

回答

1

你缺少函數atan2,它完美地解決了在同一行你的問題:

horDist = (mouseX - lineX); 
vertDist = (mouseY - lineY); 

lineRad = Math.atan2(vertDist, horDist); 

fiddle

另外,也許你會得到更好的性能比較設置變換起源apropiate,而不是設置附屬翻譯Y