談談我對投影的理解

投影的數學意義

Projection_800

A projection is the transformation of points and lines in one plane onto another plane by connecting corresponding points on the two planes with parallel lines.性能

      投影的概念很簡單,就是投射的影子。比如黑暗屋子有一處光,投到你偉岸的身軀,牆上必然會有影子,這個影子就是你的身體對應這面牆的投影。 orm

1

      如上圖, 求向量y到平面W的最短距離。對於點y,沿着平面W的法線方向(垂直於平面W),和W相交於y’,此時偏差z最小,就是咱們要找的答案。由於該射線是垂直於該平面(perpendicular),所以稱爲正交(orthogonal)投影。現實生活中,從一大堆統計點中擬合出一條有規律的線,就須要用最小二乘法,其實就是正交投影的思路。對應的數學描述爲:當W平面中Ax = y無解時,轉換爲Px= y的形式,使其有解。 對象

      固然,這樣作有什麼好處?你們對比一下本身的身體和身影的區別,答案就是把三維的問題變成了一個二維的問題,這就是一個降維的思想,也是投影的價值。爲了簡化問題,限定在某一範圍內,就要進行必要的降維(消元),若是所以致使問題無解,經過合適的投影矩陣P找到解。 blog

10

投影的現實意義

      各類緣由吧,不少時候咱們都須要抽象到二維空間,方便理解,下降成本。好比,顯示器明明是平的,如何帶給咱們「深度」的錯覺;地球明明是圓的,可地圖看起來是平的。 圖片

9

      二者的區別如上,前者採用了透視投影,眼睛認知世界也是採用該投影方式,所以,咱們能夠經過「平」幕感受出深度。然後者採用正交投影,不管遠近大小都同樣。但二者在數學理論上並沒有本質區別,都是矩陣P,只是P中的元素不一樣罷了。 資源

2

      這裏主要看氣質,咱們並不詳細給出兩個投影矩陣的推導過程, 如上是透視投影的示意圖,視錐體的任意一點(),求出在平面(z = -n)對應的點,就是一個類似三角形的過程。透視投影是一個點光源,而正交投影像一束平行光,但推算過程一致。 get

timg

      地圖投影也沒有本質區別,如上,在球心處一盞燈,地球投影到這個圓柱體側面,而後展開,造成右圖的效果。 數學

投影的硬件加速

      經過上面的介紹,雖然投影要理解的內容不少,但操做上很是簡單,每一個點只須要乘以投影矩陣P,就能夠獲得投影后的點。 it

5

      在數值計算上,這有三個特色,第一是簡單,每一個點的計算過程都是獨立的,可封閉的,並不和其餘相鄰點之間有關聯。其次是粗暴,矩陣運算計算量很大,最後基本都是浮點運算。 io

      好比動態投影,計算量巨大,特別是B/S應用,受限於客戶端的計算能力,每每都是基於服務端作動態投影計算,而後將結果返回給客戶端。但即便如此,對於C/S而言,動態投影的性能也是瓶頸。

      相比CPU,GPU沒有邏輯單元,且浮點運算能力突出,很是適合用並行的方式來解決這類簡單粗暴的計算密集型問題。

      這是一種很好的解決動態投影的方式,在性能、實時、資源消耗和兼容性上都表現出色。好比墨卡託投影轉WGS,能夠錯誤的理解爲把圖片1高度不變,長度拉伸2倍的過程。咱們徹底把投影轉換的計算放到着色器中,經過GPU頂點和片元着色器實現。

8

      從CPU到GPU的轉移,看上去很完美的,但動態投影有一個效果上的問題,畢竟是對紋理的操做,不免會有一些位置上偏移縮放等。若是用肉眼仔細看,你仍是會發現不如之前的紋理清晰。

      Cesium在這個問題上有一個很精妙的辦法,仍是要進行動態投影的,只是轉換的對象不是Texture,保證紋理信息不變,而是對Texture Coordinate進行轉換。

      以下是動態投影的效果對比。固然受限於現實,目前僅支持墨卡託和WGS之間的轉換,但在理論上,只要是點對點的動態投影均可以採用這種思路,固然最後還得看效果和數據易用性等問題。

dbde7070-80b5-11e6-94b7-5bc044807add

相關文章
相關標籤/搜索