成整體高分辨率數(shù)據(jù),且滿足局部精度要求;
[0041](6)本發(fā)明采取了中心約束處理策略:當(dāng)需要中心精度高于外圍精度時(shí),可在整體精度達(dá)到計(jì)算機(jī)最大限度后,提取中間部分網(wǎng)格,進(jìn)一步做地形分層,直到再次達(dá)到計(jì)算機(jī)最大限度,使用該策略,可在計(jì)算機(jī)內(nèi)存有限的情況下極大提高地形精度。
【附圖說明】
[0042]圖1是本發(fā)明的流程圖;
[0043]圖2是初始線段AB ;
[0044]圖3是圖2的第一置換階段;
[0045]圖4是圖2的第二置換階段;
[0046]圖5是圖2的第N置換階段;
[0047]圖6是圖1的第一細(xì)分階段存儲(chǔ)網(wǎng)格模型圖;
[0048]圖7是圖1的第一細(xì)分階段存儲(chǔ)網(wǎng)格模型圖;
[0049]圖8是圖1的第二細(xì)分階段存儲(chǔ)網(wǎng)格模型圖;
[0050]圖9是更新中心點(diǎn)的三維地形;
[0051]圖10是具有中心約束的三維地形;
[0052]圖11是添加紋理后的三維地形。
【具體實(shí)施方式】
[0053]本發(fā)明提供了一種局部精度約束的三維地形生成方法,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。
[0054]為便于理解,在介紹三維地形生成原理之前,首先以菱形正方形算法中的二維地形生成原理為例進(jìn)行說明。在一維空間,中點(diǎn)置換是如下進(jìn)行的:
[0055](I)從一條線段AB開始,如圖2所示,對(duì)于某個(gè)適當(dāng)?shù)膁Height,取線段AB的中點(diǎn)C并用-dHeight和+dHeight之間的隨機(jī)值置換它,如圖3所示,C點(diǎn)為置換后由A,B點(diǎn)新生成的點(diǎn);
[0056](2)減小dHeight的值并對(duì)線段AC和CB進(jìn)行遞歸處理,如圖4所示,D,E點(diǎn)為置換后由A, B, C點(diǎn)新生成的點(diǎn);
[0057](3)重復(fù)執(zhí)行上述步驟直到生成了足夠多的細(xì)節(jié)為止,如圖5所示,為生成的細(xì)節(jié)滿足要求的二維圖。
[0058]在每次迭代中,dHeight被2彳相乘,這里r是凹凸度常數(shù),r的魔術(shù)值是I。如果r = 1,那么dHeight在每次迭代時(shí)都被2除,這也是水平線段減少的比率。當(dāng)r = I時(shí),所生成的地形是十分相似的;當(dāng)r>l時(shí),dHeight要比線段長度減少得快,于是較早進(jìn)行的迭代對(duì)于地形有著不成比例的較大影響,r>l有利于產(chǎn)生平滑的具有幾個(gè)突出部分的地形,如山谷和高地;當(dāng)Kl時(shí),dHeight要比線段長度減少得慢,于是較晚進(jìn)行的迭代對(duì)于地形有著不成比例的較大的影響,r<l有利于產(chǎn)生混沌的地形。
[0059]圖1為本發(fā)明的流程圖,如圖1所示,本發(fā)明提供的一種局部精度約束的三維地形生成方法,具體步驟如下:
[0060](I)數(shù)字高程模型DEM是一種表示三維空間連續(xù)起伏狀態(tài)的數(shù)學(xué)模型,使用DEM表示方法中的規(guī)則網(wǎng)格模型,根據(jù)預(yù)先給定的3X3地形點(diǎn)創(chuàng)建數(shù)據(jù)存儲(chǔ)網(wǎng)格模型,將預(yù)先給定地形點(diǎn)的高程數(shù)據(jù)和該數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中;所述預(yù)先給定地形點(diǎn)為待生成三維地形的邊點(diǎn)和中心點(diǎn),且相鄰預(yù)先給定地形點(diǎn)的連線構(gòu)成矩形網(wǎng)格。
[0061]通過使用網(wǎng)格對(duì)象存儲(chǔ)數(shù)據(jù)內(nèi)容,使數(shù)據(jù)檢索使用統(tǒng)一接口,對(duì)應(yīng)角點(diǎn)、邊點(diǎn)處理實(shí)現(xiàn)方法基于網(wǎng)格對(duì)象處理。網(wǎng)格對(duì)象內(nèi)部使用變量的控制邊界影響點(diǎn)處理策略大大方便不同邊界嵌入的控制要求。使用較為復(fù)雜的鏈表結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)點(diǎn),降低了物理內(nèi)存大區(qū)域連續(xù)分配的問題。
[0062]使用浮點(diǎn)類型存儲(chǔ)高程數(shù)據(jù)點(diǎn),數(shù)據(jù)結(jié)構(gòu)使用鏈表結(jié)構(gòu),避免了不必要的精度存儲(chǔ),解決了物理連續(xù)大內(nèi)存空間的分配問題,其數(shù)據(jù)排列規(guī)則,結(jié)構(gòu)簡單,能夠?qū)崟r(shí)計(jì)算分析每一點(diǎn)的高程值,也便于計(jì)算坡度、坡向、陰影和輪廓等;
[0063](2)將當(dāng)前地形點(diǎn)在當(dāng)前數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù)更新為當(dāng)前地形點(diǎn)在一次三維地形細(xì)分后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù),具體由公式:
[0064]ri+1(li+1) = Ti(Ii) X 2-1
[0065]給出,其中,1^表示當(dāng)前地形點(diǎn)在當(dāng)前數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行數(shù),I i表示當(dāng)前地形點(diǎn)在當(dāng)前數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的列數(shù),ri+1表示當(dāng)前地形點(diǎn)在一次三維地形細(xì)分后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行數(shù),li+1表示當(dāng)前地形點(diǎn)在一次三維地形細(xì)分后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的列數(shù)。如圖6所示,更新前B點(diǎn)的行數(shù)為1,更新后行數(shù)為1,更新前列數(shù)為3,更新后列數(shù)為5。
[0066](3)利用矩形網(wǎng)格中最小網(wǎng)格單元的四個(gè)頂點(diǎn)高程數(shù)據(jù)求得每個(gè)最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),更新數(shù)據(jù)存儲(chǔ)網(wǎng)格模型的維度,并將求得的每個(gè)最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù)和該數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù)存儲(chǔ)在更新后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中,如圖6所示,中心點(diǎn)E的高程值為四個(gè)點(diǎn)A,B,C,D均值加上當(dāng)前存儲(chǔ)高程hX隨機(jī)[O, 0.5]范圍一個(gè)數(shù)值,由公式
[0067]E= (A+B+C+D) /4+random(-dHeight/2, dHeight/2)
[0068]給出,其中,A,B,C,D分別表示最小網(wǎng)格單元的四個(gè)頂點(diǎn)高程數(shù)據(jù),E表示最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),dHeight表示最小網(wǎng)格單元的四個(gè)頂點(diǎn)中某一個(gè)頂點(diǎn)的高程數(shù)據(jù);
[0069](4)以最小網(wǎng)格單元的頂點(diǎn)和中心點(diǎn)為菱形的頂點(diǎn),以最小網(wǎng)格單元邊線的中心點(diǎn)為菱形的中心構(gòu)建菱形,并利用菱形各頂點(diǎn)的數(shù)據(jù)計(jì)算每個(gè)最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù),更新數(shù)據(jù)存儲(chǔ)網(wǎng)格模型的維度,并將求得的每個(gè)最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù)和該數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù)存儲(chǔ)在更新后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中。
[0070]如圖7所示,若最小網(wǎng)格單元邊線中心點(diǎn)位于步驟(I)中矩形網(wǎng)格的邊線上,則最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù)由公式:
[0071]H= (B+D+2E) /4+random (-dHeight/2, +dHeight/2)
[0072]給出,其中,H表示最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù),B,D分別表示構(gòu)建菱形的各頂點(diǎn)中兩個(gè)最小網(wǎng)格單元頂點(diǎn)的高程值,若預(yù)先設(shè)定的三維地形邊界不為水平面,則E為最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),否則,E = O ;dHeight表示最小網(wǎng)格單元的四個(gè)頂點(diǎn)中某一個(gè)頂點(diǎn)的高程數(shù)據(jù)。
[0073]否則,如圖8所示,最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù)由公式:
[0074]Q= (E+F+J+K) /4+random(-dHeight/2, dHeight/2)
[0075]給出,其中,Q表示最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù),E,F(xiàn)分別表示構(gòu)建菱形的各頂點(diǎn)中兩個(gè)最小網(wǎng)格單元頂點(diǎn)的高程值,J和K分別構(gòu)建菱形的各頂點(diǎn)中兩個(gè)為最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),采用這種方法可保證生成地形與周圍平地銜接平滑;
[0076](5)利用最小網(wǎng)格單元邊線中心點(diǎn)的高程數(shù)據(jù)更新每個(gè)最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),并更新數(shù)據(jù)存儲(chǔ)網(wǎng)格模型的維度,將求得的每個(gè)最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù)和該數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中所處的行列數(shù)存儲(chǔ)在更新后的數(shù)據(jù)存儲(chǔ)網(wǎng)格模型中,如圖7所示,更新的最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù)由公式:
[0077]E= (F+G+H+I) /4+random(-dHeight/2, dHeight/2)
[0078]給出,其中,E為最小網(wǎng)格單元的中心點(diǎn)高程數(shù)據(jù),F(xiàn), G, H, I分別表示最小網(wǎng)格單元四個(gè)邊線中心點(diǎn)的高程數(shù)據(jù),dHeight表示最小網(wǎng)格單元的四個(gè)頂點(diǎn)中某一個(gè)頂點(diǎn)的高程數(shù)據(jù)。此方法有效避免尖刺地形生成,可保證生成地形形態(tài)更接近自然形態(tài)。
[0079](6)重復(fù)步驟(3)?步驟(5),直到三維地形整體精度達(dá)到要求;
[0080](7)當(dāng)需要中心精度高于外圍精度時(shí),可在整體精度達(dá)到計(jì)算機(jī)最大限度后,選取目標(biāo)區(qū)域,并將目標(biāo)區(qū)域內(nèi)步驟(I)預(yù)先給定的地形點(diǎn)和步驟(3)?步驟(6)求得的最小網(wǎng)格單元邊線中心點(diǎn)以及最小網(wǎng)格單元中心點(diǎn)中相鄰的點(diǎn)連接,構(gòu)成新的矩形網(wǎng)格,代替步驟(I)中的矩形網(wǎng)格,將dHeight變?yōu)樵瓟?shù)值的I/(20,重復(fù)步驟(2)?步驟(5),直至所選取的三維地形局部精度符合預(yù)設(shè)的要求;所述r為凹凸度常數(shù);初始網(wǎng)格數(shù)據(jù)為3X3個(gè)數(shù)據(jù)點(diǎn),細(xì)分下一層網(wǎng)格時(shí),每個(gè)網(wǎng)格劃分為2X2網(wǎng)格,第η次(初始取O)網(wǎng)格數(shù)據(jù)數(shù)目Cn由公式:
[0081]Cn= (2 η+1+1) X (2η+1+1)
[0082]給出,其中,Cn表示第η次網(wǎng)格數(shù)目,η表示第η次,將dHeight變?yōu)樵瓟?shù)值的I/(2D,所述r為凹凸度常數(shù),使用該策略,可在計(jì)算機(jī)內(nèi)存有限的情況下極大提高地形精度。
[0083]將數(shù)據(jù)分形局部數(shù)據(jù)重新作為中心數(shù)據(jù)輸入約束源,不僅更高的實(shí)現(xiàn)了精度,最終可達(dá)到地形生成狀態(tài)可通過提供初始約束點(diǎn)來構(gòu)建山地,谷地,高原;
[0084](8)