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. 使Canvas3D上的球體可點擊'
- 2. 2D點到球體上的
- 3. 連接球體頂點OpenGL
- 4. 作爲浮點的球體的體積
- 5. Android的全球點擊事件
- 6. 點擊Google地球插件崩潰
- 7. Android ImageButton不響應軌跡球點擊?
- 8. 在Android中禁用軌跡球點擊
- 9. 查找兩個球體的交點
- 10. 在球體上均勻地生成點
- 11. 查找點時兩個球體相交
- 12. 計算球體周圍的點數
- 13. 如何將點投影到球體上
- 14. 將球體變形爲球體
- 15. 球體中的物體(邊界球體),想要限制球體內的運動
- 16. jQuery身體點擊問題
- 17. 點擊更改砌體列
- 18. Windows窗體 - 點擊按鈕
- 19. 點擊滑動窗體
- 20. Rails,點擊編輯窗體
- 21. 刪除球體
- 22. 動畫球體
- 23. 3D球體OpenGL
- 24. 球體物體不旋轉
- 25. 合併球體和柱體
- 26. 如何在Unity中的3D點繪製球體或點?
- 27. Xamarin窗體滑塊禁用點擊/點擊
- 28. 變形OpenGL球體
- 29. iPhone動畫球體
- 30. Android紋理球體