之前整理過(guò):《透析矩陣,由淺入深娓娓道來(lái)—高數(shù)-線性代數(shù)-矩陣》、《三維旋轉(zhuǎn)筆記:歐拉角/四元數(shù)/旋轉(zhuǎn)矩陣/軸角-記憶點(diǎn)整理》,這次轉(zhuǎn)載?FuckGIS的《Cesium之球心坐標(biāo)與本地坐標(biāo)》,算是線性代數(shù)在前端領(lǐng)域的的又一應(yīng)用案例吧
球心坐標(biāo)(ECEF)與本地坐標(biāo)(NEU)
假如你來(lái)到一個(gè)陌生城市,你很可能需要問(wèn)路、通常會(huì)告訴你向北走100米,右轉(zhuǎn),向東走100米,理解起來(lái)很直觀。你給兒子買(mǎi)了一個(gè)地球儀,你從北京(39,115)轉(zhuǎn)到倫敦 (51,0),這個(gè)動(dòng)作就可以分解為兩步:先轉(zhuǎn)到同一個(gè)經(jīng)度(39,0),在轉(zhuǎn)到同一個(gè)維度(51,0)
這個(gè)例子體現(xiàn)了一個(gè)問(wèn)題:不同的地理范圍下會(huì)使用更適合的坐標(biāo)系。比如前者是局部的平面坐標(biāo),而后者是球面坐標(biāo)。因此,同一個(gè)點(diǎn)相對(duì)不同的原點(diǎn),具有不同的相對(duì)位置:既是地球上的一個(gè)經(jīng)緯度,又是“出門(mén)右轉(zhuǎn)富士康”的這類(lèi)的位置。如圖,藍(lán)色坐標(biāo)系就是球心坐標(biāo),而綠色坐標(biāo)系是以球面一點(diǎn)為原點(diǎn)的本地坐標(biāo)系。準(zhǔn)確講,就是該點(diǎn)對(duì)應(yīng)球的切面和法線組成的空間。

這自然引出了這個(gè)問(wèn)題:如何從以球心為原點(diǎn)的球面坐標(biāo)到以球面上任意一點(diǎn)為原點(diǎn)的局部坐標(biāo),坐標(biāo)系之間的轉(zhuǎn)換,答案就是矩陣。

坐標(biāo)系的換算,其實(shí)就是坐標(biāo)原點(diǎn)之間的轉(zhuǎn)換。比如發(fā)射導(dǎo)彈,首先瞄準(zhǔn),然后發(fā)射。
這里面就包括兩個(gè)動(dòng)作:旋轉(zhuǎn)和平移。如上圖,旋轉(zhuǎn)分為兩步,經(jīng)度(Z軸)旋轉(zhuǎn)和緯度(X軸)旋轉(zhuǎn),分別是上圖中綠色和藍(lán)色兩個(gè)過(guò)程。


如上,假設(shè)該經(jīng)緯度對(duì)應(yīng)的笛卡爾坐標(biāo)為(XYZ),這就是從球心原點(diǎn)到該點(diǎn)的平移,兩者結(jié)合得出矩陣的計(jì)算公式如下:

公式有了,我們把復(fù)雜的空間幾何問(wèn)題轉(zhuǎn)為數(shù)值計(jì)算,便于抽象理解和計(jì)算機(jī)的處理。該如何理解矩陣背后的幾何意義呢?
矩陣的幾何意義

如上是兩個(gè)二元一次方式組,不難推算,X = 1,Y=2是方程組的解。該方式式對(duì)應(yīng)的矩陣形式如下:

對(duì)應(yīng)的行優(yōu)先對(duì)應(yīng)的幾何意義如下,紅線代表方程式一,藍(lán)線代表方式式二,兩條直線相交于(1,2)。

Row Picture
????? 我們?cè)诳纯戳袃?yōu)先的幾何意義,此時(shí)矩陣分解為:

????? 我們來(lái)看看其對(duì)應(yīng)的向量意義:

如上圖,分別是向量[1,2]和[-1,1],我們已經(jīng)知道x和y的值分別為1,2。如上圖,我們把向量[-1,1]延長(zhǎng)2倍,也就是[-2,2],然后將該向量平移到[1,2]點(diǎn),也就是向量1的終點(diǎn),如下圖,就是向量加的計(jì)算過(guò)程,[1,2] + [-1,1] *2 = [-1,4],幾何意義就是在該向量偏移量的累加。

Col Picture
????? 矩陣之所以能夠解決坐標(biāo)轉(zhuǎn)換問(wèn)題,正是因?yàn)槠銫ol Picture所體現(xiàn)的向量意義?,F(xiàn)在,我們?cè)袤w會(huì)一下之前的矩陣,是否有一點(diǎn)親切。

優(yōu)化
如上是矩陣公式推算和幾何意義的解釋??瓷先ナ菐缀螁?wèn)題,實(shí)際上是函數(shù)問(wèn)題,這正是矩陣的價(jià)值所在。但函數(shù)問(wèn)題也有一個(gè)缺點(diǎn),特別是矩陣,計(jì)算量太大,占用內(nèi)存也不低。大家在做數(shù)學(xué)題的時(shí)候應(yīng)該都有過(guò)類(lèi)似感覺(jué),一個(gè)代數(shù)題好復(fù)雜,計(jì)算了半天,還容易犯錯(cuò),好不容易才得出答案。這時(shí)老師用幾何的思路來(lái)求解,一目了然,如穿越蟲(chóng)洞般不費(fèi)吹灰之力。
回到這個(gè)問(wèn)題,我們把坐標(biāo)轉(zhuǎn)換抽象成矩陣問(wèn)題,對(duì)應(yīng)的幾何意義就是該點(diǎn)的切面和法線。假設(shè)是一個(gè)圓,如下,圓心到該點(diǎn)就是其切面法線,這個(gè)向量很容易得出,通過(guò)點(diǎn)乘可以很容易的得到法線對(duì)應(yīng)該點(diǎn)的垂線。

這時(shí),把這個(gè)圓看成一個(gè)球,兩條黑線的叉乘就可以得出另一個(gè)垂線,這就是該點(diǎn)對(duì)應(yīng)的NEU坐標(biāo)的三個(gè)軸,是不是也很容易理解,而且只需要三個(gè)步驟,計(jì)算量很?。?/p>
減法求出Up向量
點(diǎn)乘求出East向量
叉乘求出North向量
這正是Cesium中提供的思路,對(duì)應(yīng)Transforms.eastNorthUpToFixedFrame方法,我就不當(dāng)搬運(yùn)工了,Over
轉(zhuǎn)載本站文章《Cesium球心坐標(biāo)與本地坐標(biāo)系經(jīng)緯轉(zhuǎn)換的數(shù)學(xué)原理—矩陣變換》,
請(qǐng)注明出處:https://www.zhoulujun.cn/html/theory/Mathematics/Geometry/8330.html