2016-02-01 48 views
-6

其實我不知道它是否可能,但我想讓我的相機位置與鼠標移動事件並將其轉換爲屏幕座標。爲了更詳細,我試圖用鼠標移動我的球體對象,並試圖通過鼠標移動獲取相應的新相機位置,並想更新谷歌地圖上的對象位置。我發現一些來源如何將3D對象位置轉換爲2-D,但我不確定它是否適合我的場景。如何通過鼠標移動事件獲取攝像頭位置並轉換爲three.js中的屏幕座標?

[「我加入下面的評論部分的問題的解決方案,我希望它可能是有用的人,如果他們遇到這樣類似的問題,檢查下面的兩個鏈接」]

+0

至少你應該有適當的依賴關係,從而使小提琴可以被執行。 – Thomas

+0

對不起#Thomas我對jsfiddle沒有太多的知識,這就是爲什麼我用單詞解釋所有事情的原因,如果你需要更多的東西,我甚至可以詳細解釋。如果你能幫助我,那可能真的很棒。 – rajesh

+0

請不要解決jsfiddle.net警告。相反,請留意這些建議,並編輯您的帖子以包含您所描述問題的* mcve。 – Matt

回答

0

我想,你想要的是你正在看你的球體(可能與地球紋理)的點要顯示在谷歌地圖谷歌需要經度和緯度。使用2D屏幕座標對我來說似乎是一個奇怪的方法。

您的相機可能位於座標系中心的球體周圍。我會將相機位置轉換爲極座標/球座標,即角度(半徑無關緊要)。然後你幾乎得到了拉特和長。 (Conversion between Spherical and Cartesian Coordinates Systems

phi angle

theta angle

您需要交換的公式yz和:從您的相機位置(X,Y,Z)

polar coordinates

轉換該圖形,因爲在three.js y是(也許你需要反轉z)。

現在,你需要變換分析phi(從02*PI)和theta0PI)經度(-180°180°)和緯度(-90°90°),這應該比較容易。

你的球體上的格林威治子午線應該面對正X軸。

(請糾正我,如果我錯了。)

+0

謝謝#Brakebein這是我正在尋找和你的參考幫助了我很多.. – rajesh

+0

根據參考我找到了問題的解決方案。爲了使它更簡單,問題是我應該同時更新我的​​Webgl和地圖,反之亦然,當我的鼠標移動事件被觸發時。我正在分享兩個轉換函數,這對我來說是這樣。當我的Webgl應用程序http:// pastebin中觸發鼠標移動事件時,該函數更新我在地圖上的位置。com/t7M7PusG 現在反之亦然功能http://pastebin.com/JvHYnSRq – rajesh

相關問題