Q
點擊球體
3
A
回答
2
鑑於:
- 的監視器
- 投影圓的半徑的高度和寬度,以像素爲單位
- 用戶點擊
的點的座標和假設左上角爲(0,0),則隨着您向右移動x值會增加,並且隨着您向下移動y值會增加。
將用戶的點擊點轉換爲地球的座標空間。
userPoint.x -= monitor.width/2
userPoint.y -= monitor.height/2
userPoint.x /= circleRadius
userPoint.y /= circleRadius
找到交點的z座標。
//solve for z
//x^2 + y^2 + z^2 = 1
//we know x and y, from userPoint
//z^2 = 1 - x^2 - y^2
x = userPoint.x
y = userPoint.y
if (x^2 + y^2 > 1){
//user clicked outside of sphere. flip out
return -1;
}
//The negative sqrt is closer to the screen than the positive one, so we prefer that.
z = -sqrt(1 - x^2 - y^2);
現在你已經知道了(x,y,z)交點,你可以找到經度和緯度。
假設面向使用者的眼球的中心是0E 0N,
longitude = 90 + toDegrees(atan2(z, x));
lattitude = toDegrees(atan2(y, sqrt(x^2 + z^2)))
如果球被旋轉,使得0E子午線不直接面對觀察者,從經度減去旋轉角度。
1
一種可能的方法是生成從三角形的球體,由行和列組成。它們也可以看不見。然後用鼠標拾取光線對這些三角形進行打擊測試。
看到這張照片的經/緯度格,但其應用更加密集。對於每個網格單元格,您需要2個三角形。
相關問題
- 1. Three.js單擊球體上的點
- 2. 使Canvas3D上的球體可點擊'
- 3. ammap氣球點擊事件
- 4. 2D點到球體上的
- 5. 連接球體頂點OpenGL
- 6. 球體和非均勻物體交點
- 7. 作爲浮點的球體的體積
- 8. 使用ThreeJS獲得球體紋理的點擊位置
- 9. 如何在jquery上點擊或觸摸點擊氣球
- 10. 在Android中禁用軌跡球點擊
- 11. 捕捉點擊氣球托盤圖標
- 12. Android的全球點擊事件
- 13. 點擊Google地球插件崩潰
- 14. PyQt4 - 檢測全球鼠標點擊
- 15. Android ImageButton不響應軌跡球點擊?
- 16. 訪問谷歌地球插件中點擊的氣球內容
- 17. Threejs:將球體(球體)旋轉到球體本身上的另一個點(城市)
- 18. 尋找2個球體的碰撞點
- 19. 將點投影到橢球體上
- 20. 查找點時兩個球體相交
- 21. 查找兩個球體的交點
- 22. 球體表麪點的均勻分佈?
- 23. OpenGL:在.obj頂點繪製球體
- 24. 在球體上均勻地生成點
- 25. 計算球體周圍的點數
- 26. 如何將點投影到球體上
- 27. 將球體變形爲球體
- 28. 球體 - 球體交集:距離向量
- 29. 球體的體積?
- 30. 球體中的物體(邊界球體),想要限制球體內的運動