999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ArcGIS Runtime模型三維姿態(tài)旋轉(zhuǎn)變換的研究

2019-08-19 03:59:28
福建質(zhì)量管理 2019年15期
關(guān)鍵詞:機(jī)制模型

(成都理工大學(xué) 四川 成都 610059)

引言

ArcGIS Runtime 是ESRI公司開發(fā)的二次開發(fā)包,可構(gòu)建本地應(yīng)用程序并將其部署到各種流行的平臺和設(shè)備中。為原生應(yīng)用添加強(qiáng)大的空間功能,并使應(yīng)用用戶能夠執(zhí)行所有GIS。三維坐標(biāo)轉(zhuǎn)換一直是測量領(lǐng)域的一個(gè)重要內(nèi)容[1],在圖形學(xué)中,三維建模技術(shù)提供了很多必要的方法用來將現(xiàn)實(shí)世界中的物體轉(zhuǎn)化為三維坐標(biāo)系下的數(shù)學(xué)表達(dá)形式,并通過計(jì)算機(jī)程序進(jìn)行渲染,從而實(shí)現(xiàn)在虛擬空間中模擬真實(shí)世界的效果[2]。三維坐標(biāo)轉(zhuǎn)換中最重要是坐標(biāo)轉(zhuǎn)換參數(shù)的求解。坐標(biāo)轉(zhuǎn)換參數(shù)分為旋轉(zhuǎn)、平移和尺度參數(shù),其中旋轉(zhuǎn)參數(shù)的確定是坐標(biāo)轉(zhuǎn)換的核心[3]。本文將通過控制變量的方法進(jìn)行觀察ArcGIS Runtime的旋轉(zhuǎn)現(xiàn)象,并通過該現(xiàn)象推導(dǎo)出ArcGIS Runtime的旋轉(zhuǎn)機(jī)制,計(jì)算出該旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)矩陣,然后進(jìn)行不同旋轉(zhuǎn)機(jī)制旋轉(zhuǎn)角的解算,最后驗(yàn)證成果。

一、三維模型旋轉(zhuǎn)機(jī)制的確定

本文實(shí)例三維模型為電塔模型,該模型是由多個(gè)組件模型通過三維空間旋轉(zhuǎn)角和坐標(biāo)定位定姿態(tài)組合而來,旋轉(zhuǎn)角及坐標(biāo)都存儲在renderALL.db數(shù)據(jù)庫中,該模型的旋轉(zhuǎn)機(jī)制如下:

1.繞Heading軸旋轉(zhuǎn)Rotate_z,用于確定模型側(cè)身角度。

圖1 繞Heading軸旋轉(zhuǎn)Rotate_z

2.繞Roll軸旋轉(zhuǎn)Rotate_x,用于確定模型俯仰角度。

圖2 繞Roll軸旋轉(zhuǎn)Rotate_x

3.繞Heading軸旋轉(zhuǎn)Rotate_y,第二次繞Heading軸旋轉(zhuǎn)弧度值,用于確定模型的指向方向。

圖3 繞Heading軸旋轉(zhuǎn)Rotate_y

4.從以上描述可以看出該模型的旋轉(zhuǎn)機(jī)制是Heading-Roll-Heading的不帶軸旋轉(zhuǎn)。

二、ArcGIS Runtime三維姿態(tài)旋轉(zhuǎn)機(jī)制的確定

(一)技術(shù)路線

圖4 技術(shù)路線

首先通過對模型的轉(zhuǎn)動進(jìn)行其轉(zhuǎn)動軸方向的確定,然后對是否帶動其他軸的待測軸進(jìn)行轉(zhuǎn)動,轉(zhuǎn)動到適當(dāng)?shù)慕嵌群螅賹ζ渌S進(jìn)行轉(zhuǎn)動并比較觀察此時(shí)其他軸是否與模型初始的轉(zhuǎn)動軸一致。從而得出軸旋轉(zhuǎn)的帶動情況,最后分析解釋現(xiàn)象得出結(jié)論。

(二)旋轉(zhuǎn)現(xiàn)象的觀察

直接給Heading,Picth,Roll賦值,進(jìn)而測試旋轉(zhuǎn)軸的帶動情況。

通過對模型進(jìn)行測試轉(zhuǎn)動,得到以下成果:

圖5 ArcGIS Runtime中三個(gè)轉(zhuǎn)動軸

(其中黃色軸為Heading軸,紅色軸為Pitch軸,橙色軸為Roll軸)

Figure5ThreeRotatingaxesinArcGISRuntime

(The yellow axis is the Heading axis,the red axis is the Pitch axis,and the orange axis is the Roll axis)

圖6 Pitch軸的旋轉(zhuǎn)不帶動Heading軸

圖7 Pitch軸的旋轉(zhuǎn)帶動Roll軸

圖8 Roll軸的旋轉(zhuǎn)不帶動Heading軸

圖9 Roll軸的旋轉(zhuǎn)不帶動Pitch軸

圖10 Heading軸的旋轉(zhuǎn)帶動Pitch軸

圖11 Heading軸的旋轉(zhuǎn)帶動Roll軸

圖中白線旋轉(zhuǎn)軸為被帶動后的旋轉(zhuǎn)軸,其他顏色旋轉(zhuǎn)軸與初始旋轉(zhuǎn)軸一致。利用此方法觀察ArcGIS Runtime的模型旋轉(zhuǎn),現(xiàn)象總結(jié)如下:

表一 ArcGIS Runtime中旋轉(zhuǎn)軸的帶動現(xiàn)象

(三)旋轉(zhuǎn)現(xiàn)象的解釋和旋轉(zhuǎn)機(jī)制的確定

但ArcGIS Runtime的模型旋轉(zhuǎn)并非如此復(fù)雜,當(dāng)Pitch,Roll,Heading任意一個(gè)的值發(fā)生改變時(shí),并不是基于上次的空間姿態(tài)改變相應(yīng)的角度,而是計(jì)算機(jī)重新通過獲取到的三個(gè)旋轉(zhuǎn)角度進(jìn)行計(jì)算空間姿態(tài)。通過上面的旋轉(zhuǎn)現(xiàn)象可以看出,ArcGIS Runtime的旋轉(zhuǎn)機(jī)制是帶軸旋轉(zhuǎn)的,在旋轉(zhuǎn)的順序上,后面軸的旋轉(zhuǎn)是不會影響前面的旋轉(zhuǎn)的,而現(xiàn)象中出現(xiàn)的不帶軸的情況是因?yàn)樵撦S在旋轉(zhuǎn)順序的后面,導(dǎo)致每次改變處于順序后面的旋轉(zhuǎn)角度時(shí),計(jì)算機(jī)都會重新通過旋轉(zhuǎn)順序計(jì)算模型空間姿態(tài),處于順序前面的旋轉(zhuǎn)角度沒有改變,因此后面的旋轉(zhuǎn)軸與以前的一致,當(dāng)計(jì)算到順序后面的軸旋轉(zhuǎn)時(shí),由于順序前面的軸已經(jīng)旋轉(zhuǎn)過了,而后面也沒有該軸的旋轉(zhuǎn),因此造成了后面的旋轉(zhuǎn)沒有帶動處于旋轉(zhuǎn)順序前面的軸旋轉(zhuǎn)的假象,因此可以得出結(jié)論有不帶軸旋轉(zhuǎn)假象的旋轉(zhuǎn)處于旋轉(zhuǎn)順序的后面,由此結(jié)論及該現(xiàn)象便可以推論出ArcGIS Runtime的旋轉(zhuǎn)機(jī)制是Heading - Pitch - Roll順序的帶軸旋轉(zhuǎn)。

在旋轉(zhuǎn)順序上,順序后面的軸旋轉(zhuǎn)將不會影響順序前面軸的旋轉(zhuǎn),而順序前面的軸旋轉(zhuǎn)會帶動后面旋轉(zhuǎn)的旋轉(zhuǎn)軸。當(dāng)逆順序的不帶軸旋轉(zhuǎn)時(shí),由于是不帶軸旋轉(zhuǎn),因此順序前面的軸旋轉(zhuǎn)不會影響順序后面的軸旋轉(zhuǎn),此時(shí)討論順序后面的軸旋轉(zhuǎn)是否帶動順序前面的軸也已經(jīng)沒有意義了,因?yàn)閹Р粠佣疾粫绊戫樞蚝竺娴男D(zhuǎn),正順序的帶軸旋轉(zhuǎn),順序后面的軸旋轉(zhuǎn)不會影響順序前面的軸旋轉(zhuǎn),因此,兩者影響順序后面旋轉(zhuǎn)的旋轉(zhuǎn)軸帶動情況是一致的,當(dāng)對應(yīng)軸的旋轉(zhuǎn)角度一致時(shí),兩種旋轉(zhuǎn)方法也將會達(dá)到一樣的效果。因此可以得出結(jié)論,逆順序的不帶軸旋轉(zhuǎn)效果等同于帶軸旋轉(zhuǎn),這也為后面的旋轉(zhuǎn)角矩陣解算提供了支撐。

就以ArcGIS Runtime的旋轉(zhuǎn)機(jī)制為例,當(dāng)逆順序不帶軸旋轉(zhuǎn)時(shí),Roll軸的旋轉(zhuǎn)不帶其他軸。Pitch軸的旋轉(zhuǎn),首先不會帶動Heading軸,而Roll軸順序上在Pitch軸前面,因此Pitch軸會不會被帶動已經(jīng)沒有意義了(實(shí)際上是帶動的),因?yàn)椴粫绊懞竺娴男D(zhuǎn),而這里為了方便比較就記為Pitch的旋轉(zhuǎn)帶動了Roll,而最后的Heading軸更是如此,會不會帶動其他軸已經(jīng)沒有意義了,為了方便比較同樣記為帶動了Pitch軸和Roll軸,由此可以看出現(xiàn)象:

表二 逆順序的不帶軸旋轉(zhuǎn)旋轉(zhuǎn)軸的帶動現(xiàn)象

該現(xiàn)象與ArcGIS Runtime的旋轉(zhuǎn)現(xiàn)象一致,當(dāng)對應(yīng)軸的旋轉(zhuǎn)角度一致時(shí),兩種旋轉(zhuǎn)機(jī)制效果等同。

三、不同旋轉(zhuǎn)機(jī)制旋轉(zhuǎn)角的相互轉(zhuǎn)換

(一)旋轉(zhuǎn)矩陣

坐標(biāo)變換,利用歐拉角描述一次平面旋轉(zhuǎn),見圖12。

圖12 坐標(biāo)系間的變換關(guān)系

設(shè)坐標(biāo)系繞O點(diǎn)旋轉(zhuǎn)θ角后得到坐標(biāo)系X′ OY′,空間中有一矢量OP在坐標(biāo)系XOY中的坐標(biāo)為r1,在坐標(biāo)系X′OY′中坐標(biāo)為r2,Z坐標(biāo)未變,即有[4]:

(1)

r2=R*r1

旋轉(zhuǎn)矩陣是由9個(gè)元素組成的3×3的正交矩陣[5]。假設(shè)繞著Heading,Pitch,Roll旋轉(zhuǎn)的角度為z,x,y,以此類推,則空間的三個(gè)旋轉(zhuǎn)矩陣如下:

(2)

(二)旋轉(zhuǎn)矩陣的左乘與右乘

空間的旋轉(zhuǎn)矩陣是由多個(gè)單次旋轉(zhuǎn)組成。如果第二次及以后的旋轉(zhuǎn)是相對于基礎(chǔ)坐標(biāo)系來做的,則第二個(gè)及以后的旋轉(zhuǎn)矩陣左乘之前的旋轉(zhuǎn)矩陣。

如果第二次及以后的旋轉(zhuǎn)矩陣是相對于前一次旋轉(zhuǎn)后帶動的坐標(biāo)系,則第二次及以后的旋轉(zhuǎn)矩陣右乘之前的旋轉(zhuǎn)矩陣[6]。

而ArcGIS Runtime的旋轉(zhuǎn)是帶軸旋轉(zhuǎn)的,因此旋轉(zhuǎn)矩陣的組合是矩陣的右乘,假設(shè)在ArcGIS Runtime中繞著Heading,Pitch,Roll旋轉(zhuǎn)的角度為z,x,y,則ArcGIS Runtime旋轉(zhuǎn)矩陣為RHeading(z)RPitch(x)RRoll(y)。

(三)不同旋轉(zhuǎn)機(jī)制旋轉(zhuǎn)角的解算

ArcGIS Runtime的旋轉(zhuǎn)矩陣是:

R11=cos y cos z-sin y sin x sin z

R12=-sin z cos x

R13=sin y cos z+cos y sin z sin x

R21=cos y sin z+sin y sin x cos z

R22=cos x cos z

(3)

R23=sin z sin y-sin x cos z cos y

R31=-sin y cos z

R32=sin x

R33=cos y cos x

從上列等式可以導(dǎo)出x,y,z的角度,公式如下:

y=arctan2(-R13,R33);

(4)

z=arctan2(-R21,R22)

這樣便可以將任意的旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角轉(zhuǎn)換為ArcGIS Runtime旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角了。假設(shè)電塔模型旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角分別為Rotate_z,Rotate_x,Rotate_y,由于是不帶軸旋轉(zhuǎn),旋轉(zhuǎn)矩陣的組合是矩陣的左乘,而帶軸旋轉(zhuǎn)與不帶軸旋轉(zhuǎn)的相互轉(zhuǎn)換是逆順序旋轉(zhuǎn)即可,因此該旋轉(zhuǎn)矩陣如下:

P11=cos(Rotate_z)cos(Rotate_x)cos(Rotate_y)-sin(Rotate_z)sin(Rotate_y)

P12=-cos(Rotate_z)cos(Rotate_x)sin(Rotate_y)-sin(Rotate_z)cos(Rotate_y)

P13=cos(Rotate_z)cos(Rotate_x)

(5)

P21=sin(Rotate_z)cos(Rotate_x)cos(Rotate_y)+cos(Rotate_z)sin(Rotate_y)

P22=-sin(Rotate_z)cos(Rotate_x)sin(Rotate_y)+cos(Rotate_z)cos(Rotate_y)

P23=sin(Rotate_z)sin(Rotate_x)

P31=-sin(Rotate_x)cos(Rotate_y)

P32=sin(Rotate_x)sin(Rotate_y)

P33=cos(Rotate_x)

兩個(gè)旋轉(zhuǎn)矩陣都是使同一個(gè)初始姿態(tài)到同一個(gè)目標(biāo)姿態(tài),因此令R=P;則有:

y=arctan2(-P13,P33);

(6)

z=arctan2(-P21,P22)

由此可得由電塔的旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角推導(dǎo)出ArcGIS Runtime旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角。

通過該公式編寫程序進(jìn)行成果測試。

通過測試,無論當(dāng)前是怎樣的姿態(tài),當(dāng)轉(zhuǎn)動三個(gè)旋轉(zhuǎn)軸來改變Rotate_z,Rotate_x,Rotate_y的值時(shí),在ArcGIS Runtime中剛好和塔模型旋轉(zhuǎn)機(jī)制中的側(cè)身,俯仰和指向相對應(yīng),通過這樣的算法,將ArcGIS Runtime的旋轉(zhuǎn)機(jī)制轉(zhuǎn)化為了塔模型的旋轉(zhuǎn)機(jī)制。這也說明了該公式和方法的正確性。

結(jié)語

三維模型姿態(tài)變換是三維模型應(yīng)用領(lǐng)域的重要基礎(chǔ)技術(shù),隨著三維模型在各行各業(yè)中的廣泛應(yīng)用,三維模型姿態(tài)變換技術(shù)也得到了飛速的發(fā)展[7]。而對于ArcGIS Runtime而言,三維模型姿態(tài)變換也影響用戶的直觀體驗(yàn),模型的精準(zhǔn)定位定姿態(tài)是三維應(yīng)用最基本的保證。本文不僅給出了ArcGIS Runtime的旋轉(zhuǎn)機(jī)制和不同旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角轉(zhuǎn)換,更是提供了觀察旋轉(zhuǎn)機(jī)制和不同旋轉(zhuǎn)機(jī)制的旋轉(zhuǎn)角轉(zhuǎn)換的解算方法,這為更多的三維GIS開發(fā)者提供了支撐。

猜你喜歡
機(jī)制模型
一半模型
構(gòu)建“不敢腐、不能腐、不想腐”機(jī)制的思考
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
自制力是一種很好的篩選機(jī)制
文苑(2018年21期)2018-11-09 01:23:06
定向培養(yǎng) 還需完善安置機(jī)制
3D打印中的模型分割與打包
破除舊機(jī)制要分步推進(jìn)
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
注重機(jī)制的相互配合
主站蜘蛛池模板: 中文字幕在线永久在线视频2020| a毛片免费在线观看| 国产高清毛片| av天堂最新版在线| 国产在线观看人成激情视频| 在线国产毛片| 伊人久久精品无码麻豆精品| 欧美午夜视频在线| 99在线视频免费| 自拍偷拍欧美| 欧美一级在线看| 国产成年女人特黄特色毛片免 | AV无码一区二区三区四区| 国产av色站网站| 欧美人人干| 国产va免费精品观看| 亚洲中文字幕97久久精品少妇| 精品综合久久久久久97| 欧美曰批视频免费播放免费| 巨熟乳波霸若妻中文观看免费| 国产精品黑色丝袜的老师| 无码免费试看| 99精品国产自在现线观看| 国产精品分类视频分类一区| 国产亚洲精品自在线| 成年人午夜免费视频| 四虎影视库国产精品一区| 激情综合网激情综合| 亚洲AV无码不卡无码| 91丨九色丨首页在线播放 | 一区二区理伦视频| 国产在线欧美| 国产成人精品一区二区秒拍1o| 欧美日韩国产在线观看一区二区三区 | 亚洲一区二区日韩欧美gif| 亚洲国产理论片在线播放| 欧美人人干| 自偷自拍三级全三级视频| 欧美日韩资源| 亚洲AV免费一区二区三区| 九九热精品在线视频| 国产制服丝袜无码视频| 特级欧美视频aaaaaa| 亚洲国产精品久久久久秋霞影院| 成人福利在线观看| 亚洲色精品国产一区二区三区| 欧美午夜精品| 成人在线观看不卡| 免费毛片视频| 亚洲天堂网在线观看视频| 中日韩一区二区三区中文免费视频 | a亚洲视频| 国产乱码精品一区二区三区中文 | 欧美三级视频网站| av在线无码浏览| 久久久受www免费人成| 国产美女精品一区二区| 喷潮白浆直流在线播放| 精品人妻系列无码专区久久| 国产成人亚洲毛片| 欧洲亚洲一区| 色欲色欲久久综合网| 欧美午夜在线观看| 免费无遮挡AV| 美女内射视频WWW网站午夜 | 日本高清有码人妻| 在线中文字幕网| 欧美在线三级| 亚洲人成网站观看在线观看| 免费99精品国产自在现线| 99无码中文字幕视频| 亚洲精品午夜天堂网页| 一边摸一边做爽的视频17国产| 毛片手机在线看| 高清大学生毛片一级| 国产精品内射视频| 人妻夜夜爽天天爽| 国产亚洲欧美在线中文bt天堂| www.亚洲国产| 国产在线97| av色爱 天堂网| 亚洲av无码久久无遮挡|