顧及拓撲的三維地理空間實體群的線消隱方法
【專利摘要】一種顧及拓撲的三維地理空間實體群的線消隱方法,所述三維地理空間實體群的三維空間數(shù)據(jù)模型包括節(jié)點、邊、環(huán)、平面片和體這5類基元,預設的規(guī)則包括給予消隱的每個實體必須是剖分完全的,設定了只共面、只共邊、只共點、共面面、共邊面、共邊邊、共點面、共點邊、共點點的情況;進行消隱過程,包括顧及拓撲關(guān)系的消隱預處理,擴展的第一類線消隱處理處理自遮擋的情況,擴展的第二類線消隱處理處理互遮擋的情況。與現(xiàn)有三維實體集合線消隱的相關(guān)技術(shù)相比,本發(fā)明能夠?qū)崿F(xiàn)三維實體集群的線消隱處理,對實體的各種情況都能準確進行處理。
【專利說明】顧及拓撲的三維地理空間實體群的線消隱方法
【技術(shù)領域】
[0001] 本發(fā)明涉及三維地理空間數(shù)據(jù)組織與可視化的【技術(shù)領域】,尤其是涉及一種顧及拓 撲的三維地理空間數(shù)據(jù)的線消隱方法。
【背景技術(shù)】
[0002] 用計算機生成三維形體的真實感圖形,是計算機圖形學研究重點之一。真實感圖 形在仿真模擬、幾何造型、科學計算可視化等多個領域具有廣泛應用,其生成過程涉及消 隱。消隱,就是運用某種技術(shù)手段判別物體的隱藏部分(不可見的線或面)并將其從畫面 中消除或用虛線繪制的過程,也稱可見性測試。消隱后的圖形,稱為ShadedPicture或者 Half-tonePicture,與物體的可見性判定(VisibilityDetermination)在原則上等價。采 用消隱后的二維線框圖形來表達真實的三維圖形,輸入數(shù)據(jù)為三維實體群,輸出數(shù)據(jù)為二 維線框。因為輸出數(shù)據(jù)是線框,面在輸出結(jié)果中是不表達的,所以核心是線狀實體在最終輸 出結(jié)果中的可見或不可見表達。消隱的過程,其實是不斷趨近最真實的面與線可見性判定 的過程。
[0003] 之所以消隱在真實感圖形生成過程中非常重要,是因為:(1)三維信息在經(jīng)過二 維投影變換后失去了深度信息,往往導致圖形表達的二義性,需要在繪制二維圖形同時通 過隱藏物體的不可見部分來輔助展現(xiàn)三維立體形態(tài);(2)消隱是生成真實感圖形的重要組 成部分,它為后續(xù)的光照模型設置、表面渲染(包括紋理映射)提供了基礎。
[0004] 消隱方法至今研究眾多。面對迄今為止眾多的消隱算法研究,分類方法也有所不 同,可歸納如下:⑴根據(jù)消隱方法分類,包括物空間消隱和像空間消隱;⑵根據(jù)消隱對象 分類,包括線消隱和面消隱;(3)根據(jù)實現(xiàn)途徑分類,包括計算機軟件實現(xiàn)和硬件實現(xiàn)。現(xiàn) 有多采用第一種和第二種分類方法,特別是第一種分類方法。具體的,物空間消隱以三維場 景中對象為處理單元,在所有對象之間進行比較,除去不可見部分。物空間消隱多用于線消 隱,也用于面消隱。像空間消隱以構(gòu)成圖形的每一個像素為處理單元,針對場景中所有在該 像素上有投影的表面,確定其中相對于觀察點的可見表面,用該表面顏色填充該像素。像空 間消隱多用于面消隱。
[0005] 自從Robert于1963年提出處理隱藏線、Weiler等于1977年提出處理隱藏面的算 法以來,消隱算法層出不窮。針對現(xiàn)有大量的針對消隱處理的文獻研究,往往采用像空間、 物空間、像空間和物空間結(jié)合這三個分類。
[0006] 針對基于像空間的諸多消隱算法,其中Z緩沖器算法最為有名,它也是最為目前 常用的作用于像空間的隱藏面消除算法,它在工業(yè)界被廣泛采用,可通過硬件實現(xiàn)。例如, OpenGL作為工業(yè)界事實上的標準,其采用的就是Z緩沖器算法。針對基于像空間的消隱算 法,以像素為基本研究單位,與完全基于物空間的消隱算法相比其涉及計算幾何內(nèi)容較少, 其本質(zhì)上屬于圖形圖像學領域。故而,完全基于像空間的消隱算法、結(jié)合像空間和物空間的 消隱算法不是本發(fā)明的研究重點,基于物空間的消隱算法才是本發(fā)明的借鑒對象。
[0007] 此外,針對完全基于像空間、結(jié)合像空間和物空間的消隱方法,它們的算法復雜度 與環(huán)境復雜度無關(guān)(如與三維實體包含了多少面片、多少線段無關(guān)),只與輸出設備的像 素分辨率有關(guān),故而無法在圖像縮放時依然保持足夠清晰度,可視化效果不理想;相對的, 針對完全基于物空間的消隱方法(包括Apprel方法、Loutrel方法、Galimberti方法、 Mononari方法等)的空間復雜度,都與環(huán)境復雜度的平方呈現(xiàn)正相關(guān),在圖像縮放時依然 保持足夠清晰度,可視化效果理想。這也是本發(fā)明的重點參考對象是基于物空間的消隱方 法的原因。
[0008] 按照不同消隱客體分類,還包括針對機械零件、針對曲面、針對地形、針對地質(zhì)柵 欄等消隱。還有許多研究關(guān)注如何設計應用于消隱的數(shù)據(jù)模型或數(shù)據(jù)結(jié)構(gòu),基于現(xiàn)有不同 數(shù)據(jù)結(jié)構(gòu)能夠?qū)崿F(xiàn)一定程度的物空間消隱,但各自存在局限性,因為受本身數(shù)據(jù)結(jié)構(gòu)的局 限較大(之后詳述)。
[0009] 由上可見,有的研究注重消隱方法的輸入數(shù)據(jù)類型(如針對機械零件、針對曲面、 針對地形、針對地質(zhì)柵欄),有的研究注重輸出結(jié)果的表達形式(如P緩沖器算法中輸出結(jié) 果的不同類型表達),有的研究注重應用于消隱的數(shù)據(jù)結(jié)構(gòu)設計(如半邊結(jié)構(gòu)、B-rep結(jié)構(gòu)、 B-rep與CSG結(jié)合、有限元組織形式),更多的研究關(guān)注消隱方法的設計原理(如各類物空 間算法、像空間算法、物空間與像空間結(jié)合算法)。
[0010] 綜上所述,每一個消隱方法事實上都可以從它們共同擁有的五個方面著手給予歸 納,即每一個消隱方法可以看成是一個五元組集合,即:HA= (1,0,0汁,幻。其中:撤是一個 消隱方法,I(Input)為要進行消隱處理的三維對象的集合,簡稱輸入;O(Output)為經(jīng)過消 隱處理的二維對象的集合,簡稱輸出;D(DataStructure)為進行消隱處理時采用的數(shù)據(jù)結(jié) 構(gòu),簡稱數(shù)據(jù)結(jié)構(gòu);P(Pr〇Cedure)為進行消隱所需基本操作過程的集合,主要包括:分類、 排序、三維坐標變換、透視投影變換,基本圖形元素的求交計算,兩個區(qū)域重疊判斷,點與區(qū) 域的包含測試,面的朝向測試,簡稱過程;S(Strategy)為消隱策略,即規(guī)定P(Procedure) 中各操作過程被采用的先后次序,簡稱策略。
[0011] 消隱方法之所以不同,主要在于因素I,D,P,S,其次在于因素0。針對I,只有保證 輸入數(shù)據(jù)是正確的,才有可能通過正確的消隱過程得出正確的消隱結(jié)果。針對D,即消隱處 理時采用的數(shù)據(jù)結(jié)構(gòu),針對同一消隱方法往往可以采用不同的數(shù)據(jù)結(jié)構(gòu)進行算法實現(xiàn),算 法效率有所差異,如BSP樹算法就是利用了二叉樹來分割和顯示場景從而加速消隱速度; 再如針對采用邊界表達模型組織的實體,可以用半邊結(jié)構(gòu)(Half-edge)組織,還可以用翼 邊結(jié)構(gòu)(Winged-edge)組織,采用何種結(jié)構(gòu)對算法效率有影響。因素I與因素D密切相關(guān)。 針對P(即分類、排序、包含性測試、可見性測試)和S(即P中各基本操作過程被采用的先 后次序),它們也緊密相關(guān),共同描述了消隱算法的基本原理,從根本上影響算法正確性。針 對〇,其對輸出結(jié)果的可視化效果產(chǎn)生影響,但不影響算法正確性。故而,認為因素I,D,P,S 是決定因素,因素〇是輔助因素,且I與D關(guān)系緊密,P與S關(guān)系緊密。可進一步如下歸納:
[0012] 正確的輸入I(合適的數(shù)據(jù)結(jié)構(gòu)D)+正確的處理過程P與S=正確的輸出0
[0013] 盡管如此,現(xiàn)有的文獻與研究極少深入分析消隱方法的I(Input),特別是針對眾 多的物空間消隱方法,沒有深入分析輸入數(shù)據(jù)中各類基元的特征,尤其包括用于消隱的線 是怎么樣的線、面是怎么樣的面、體是怎么樣的體,同時沒有系統(tǒng)歸納這些基元之間的拓撲 關(guān)系,尤其是體與體之間拓撲關(guān)系的分類。哪些算法有能力實現(xiàn)單個凸多面體的消隱、哪些 算法能實現(xiàn)單個凹多面體的消隱、哪些算法能夠?qū)崿F(xiàn)帶洞的多面體的消隱、哪些算法能夠 實現(xiàn)多個凸多面體的消隱(包括凸體與凸體之間可能分離、可能相鄰等)、哪些算法能夠?qū)?現(xiàn)多個凹多面體的消隱(凹體與凹體之間可能分離、可能相鄰等)、哪些算法能夠?qū)崿F(xiàn)凹多 面體與凸多面體混合時的消隱處理(凸體與凹體可能分離、可能相鄰等),這些在現(xiàn)有研究 與文獻中都沒有給予系統(tǒng)歸納(本發(fā)明中稍后歸納);同時,能夠?qū)崿F(xiàn)以上消隱處理的各個 數(shù)據(jù)模型或結(jié)構(gòu)有何特點、有何約束,消隱算法各自又有何區(qū)別,現(xiàn)有文獻或研究均沒有深 入分析。是否能夠給出一種能夠既能實現(xiàn)凸多面體消隱、又能實現(xiàn)凹多面體消隱、而且這樣 的體是集群的(體與體之間包括分離、相鄰于點、相鄰于邊、相鄰于面等)的統(tǒng)一消隱算法, 更是值得深入考慮。這正是本發(fā)明的研究重點。
[0014] 本發(fā)明為"一種顧及拓撲的三維實體集群的線消隱方法",其著眼點在于"顧及拓 撲關(guān)系"。故而,在給予
【發(fā)明內(nèi)容】
的詳細闡述前,首先回顧當前三維空間數(shù)據(jù)模型的研究現(xiàn) 狀,之后分析當前拓撲關(guān)系的研究現(xiàn)狀,然后給予幾個當前成熟的標準和三維軟件中模型 及其拓撲關(guān)系的現(xiàn)狀分析。具體包括:
[0015] 一.當前三維空間數(shù)據(jù)模型的研究現(xiàn)狀
[0016] 至今為止,組織三維空間數(shù)據(jù)的模型研究眾多,典型的包括三維形式化 數(shù)據(jù)模型(3DFDS, 3DFormalDataStructure)、簡化空間模型(SSM,Simplified SpatialModel)、城市數(shù)據(jù)模型(UDM,UrbanDataModel)、面向?qū)ο蟮娜S數(shù)據(jù)模型 (003D,0bject-〇riented3DDataModel)。更為具體的,3DFDS提出最早,但針對點、線、面、 體存在諸多約束;在SSM中,基本組織單元是面,面由弧段構(gòu)成(而弧段由頂點封閉),面封 閉了體;在UDM中,基本組織單元仍然是面,但面直接由頂點序列表達(省略了弧段),面封 閉了體;在003D中,基本組織單元也是面,但約定面必須是三角面片(即三角形),每個三 角面片由三個頂點構(gòu)成,三角面片封閉了體。除了以上常見的三維空間數(shù)據(jù)模型外,還存在 許多其它數(shù)據(jù)模型:
[0017] (1)國內(nèi)外學者提出的服務于學術(shù)研究的三維空間數(shù)據(jù)模型
[0018] 典型的包括自定義的、服務于學術(shù)研究的三維空間數(shù)據(jù)模型;
[0019] (2)作為業(yè)內(nèi)或國際標準的三維空間數(shù)據(jù)模型
[0020] 典型的包括在ISO和GML3中的數(shù)據(jù)模型;
[0021] (3)應用于商業(yè)軟件的三維空間數(shù)據(jù)模型
[0022] 典型的包括在Oracle中使用的三維空間數(shù)據(jù)模型。
[0023] 無論是以上哪種三維空間數(shù)據(jù)模型,都強調(diào)單個三維實體內(nèi)部各類基元如何構(gòu) 造。換言之,即都遵循"〇維基元(如點)_1維基元(如弧段)-2維基元(如面)-3維基元 (如體)"的層次性構(gòu)造標準,只是不同數(shù)據(jù)模型中〇維、1維、2維、3維基元有所不同。
[0024] 二.當前空間實體間拓撲關(guān)系的研究現(xiàn)狀
[0025] 描述空間實體之間拓撲關(guān)系的方法眾多,包括四交模型(4IM, 4-Intersection Model)、九交模型(9IM, 9-IntersectionModel)、基于維數(shù)擴展的九交模型(DE9IM,Dime nsion-Extended9_IntersecitonModel)、基于區(qū)域連接理論(如RCC-8)等。其中,前三 種都是基于點集拓撲學原理,應用最為典型和廣泛。特別是基于九交模型,針對三維實體 之間拓撲關(guān)系給予分類,則面與面之間共有38種拓撲關(guān)系,體與體之間共有8種拓撲關(guān) 系,面與體之間共有19種拓撲關(guān)系。其中,體與體之間的8種拓撲關(guān)系是研究重點,即相 離(disjoint)、相遇(meet)、包含(contain)、包含于(inside)、覆蓋(covers)、被覆蓋 (coveredBy)、相等(equal)、重疊(overlap)。
[0026] 同時,在現(xiàn)實世界中要求三維空間是完全剖分的,最為典型的是三維產(chǎn)權(quán)體與三 維產(chǎn)權(quán)體之間不能發(fā)生交叉或疊置情況,其類似于二維空間中宗地與宗地之間不能發(fā)生交 叉或疊置情況,否則會在相交的二維(三維)宗地部分產(chǎn)生權(quán)利二義性,進而產(chǎn)生法律上沖 突,這是必須禁止的。故而,以上約束會造成:在這8種拓撲關(guān)系中,包含(contain)與包含 于(inside)、覆蓋(covers)與被覆蓋(coveredBy)、相等(equal)、重疊(overlap)是不被 允許的。于是,只有相離(disjoint)和相遇(meet)是被允許的。同時,相離(disjoint) 關(guān)系中兩個三維實體之間沒有任何交集,拓撲關(guān)系的構(gòu)造與維護對象只是單個三維實體, 相對簡單。此時,只剩余相遇(meet)關(guān)系,在相遇(meet)關(guān)系中兩個相鄰實體之間存在共 孕的基兀。
[0027] 以上為點集拓撲學理論。進一步的,針對相交基元,如果采用相交基元的維度代替 是否相交,則以上點集拓撲學理論中羅列的拓撲關(guān)系還可再次細分。針對三維實體與三維 實體之間的相遇(meet)情況,可分三大類:相遇于點(meetatOD)、相遇于線(meetatlD)、 相遇于面(meetat2D)。從相遇于點、到相遇于線、再到相遇于面,這是一個連通性逐漸增 強的過程。之后為闡述直觀,相遇于點也稱"點相鄰"(或"共享點")、相遇于線也稱"線相 鄰"(或"邊相鄰"、"共享邊"、"共享線")、相遇于面也稱"面相鄰"(或共享面)。針對存在 點相鄰、或線相鄰、或面相鄰的三維實體集群,在現(xiàn)實世界中很常見,典型的如三維建筑體 集群或三維宗地集群。如何針對這樣的三維實體集群實現(xiàn)消隱處理,正是本發(fā)明的研究重 點。
[0028] 三.若干成熟的標準和軟件中三維數(shù)據(jù)模型及其拓撲關(guān)系
[0029] (1)在OpenGL中的模型及拓撲
[0030] 在圖形可視化標準OpenGL中,存在兩種模式繪制三維實體,一種是OpenGL的實用 工具庫(GLUT)直接提供了若干繪制三維實體的API,如glutSolidSphere、glutSolid等; 另一種是采用二維圖元的集合來模擬三維實體,典型的包括由三角形集(GL_TRIANGLES)、 三角形帶(GL_TRIANGLE_STRIP)、三角形扇(GL_TRIANGLE_FAN)、四邊形集(GL_QUADS)所模 擬的三維實體,雖然如此模擬的結(jié)果貼上紋理等信息后可以非常逼真地模擬三維實體,但 從拓撲上不能夠保證所模擬的三維實體的有效性。
[0031] (2)在ESRIArcScene3D中的模型及拓撲
[0032] 米用MultiPatch要素類型來組織三維模型。MultiPatch在ESRIArcScene 中如下定義:描述三維表面的元素集合,最常見的包括;三角扇(TriangleFan)、三角帶 (TriangleStrip)、環(huán)組(Rings)??梢?,采用MultiPatch通過表面建模方式來模擬三維實 體與OpenGL中情況類似,同樣沒有三維實體的概念,沒有實體間拓撲關(guān)系的明確定義,不 能保證所模擬的三維實體的有效性。同時,值得指出的是,ESRIArcScene3D的可視化機制 基于OpenGL(詳見ArcGISlOHelp)。
[0033] (3)GoogleSketchup中三維數(shù)據(jù)模型及拓撲
[0034] 在GoogleSketchup中,組織三維數(shù)據(jù)的模型基元包括點(Point)、邊(Edge)、使 用邊(EdgeUse)、面片(Face)、組(Group)。值得指出的是,這里的"使用邊(EdgeUse)"描 述了"邊(Edge)"的使用情況,其類似于三維組合圖中的"投射(dart)",其能夠組織存在 分離、點相鄰、線相鄰、面相鄰的三維實體集群。然而,在GoogleSketchup中,并沒有真 正的三維實體(3DSolid)概念,其用組(Group)來模擬三維實體(3DSolid),換言之,組 (Group)可以是邊(Edge)的集合,也可以是面(Face)的集合,故而作為面片(Face)集合的 組(Group)不能夠保證其模擬的三維實體一定是有效的三維實體,可能存在懸掛面/邊、孤 立面/邊等奇異情況。
[0035] 同時,在GoogleSketchup中,針對三維實體的可視化框架提供了透視投影 (PerspectiveProjection)和平行投影(ParallelProjection)兩種模式,其中透視投影 還可以選擇單點透視(One-PointPerspective)或兩點透視(Two-PointPerspective)。在 以上模式中,在GoogleSketchup中可以實現(xiàn)三維實體的消隱處理(Tools/View/Toolbar/ FaceStyle/HiddenLine)。盡管如此,GoogleSketchup的可視化機制同樣基于OpenGL。 進一步的,由于OpenGL中實現(xiàn)消隱是基于像空間的;所以GoogleSketchup中無法針對隱 藏線單獨設置可視化樣式。
[0036] (4)CGAL(計算幾何算法庫)中的模型及拓撲
[0037] CGAL全稱"計算幾何算法庫(ComputationalGeometryAlgorithmLibrary) "。 在CGAL中,最為有名的是半邊(Half-edge)和翼邊(Winged-edge)數(shù)據(jù)結(jié)構(gòu)。
[0038] 針對半邊(Half-edge)數(shù)據(jù)結(jié)構(gòu)(Bronnimann,H. (2001) ?Designing andImplementingaGeneralPurposeHalf-edgeDataStructure.Algorithm Engineering,SpringerBerlinHeidelberg,pp. 51-60),其可以組織三維實體,由于半邊 結(jié)構(gòu)的核心是半邊,因此其構(gòu)造層次性為"頂點-半邊-面-體"。然而,半邊結(jié)構(gòu)只適用 于組織有向二維流形(〇riented2-manifold)類型的實體,包括二維空間中的多邊形實體 集合、三維空間中單個三維實體、三維空間中彼此分離(disjoint)或只存在點相鄰(meet atOD)的三維實體集群。之所以如此,是由每條半邊(Half-edge)只能相接于兩個面片的 特征所決定(Armstrong,M.A. (1979).BasicTopology[M],London:McGraw-Hill.),即這 兩個相接面片的可見性共同決定了該半邊的可見性。換言之,半邊結(jié)構(gòu)不能組織三維流形 (3-manifold)〇
[0039] 翼邊(Winged-edge)數(shù)據(jù)結(jié)構(gòu)(Baumgart,B.G. (1975) ?Winged-edgePolyhedron RepresentationforComputerVision.NationalComputerConference, 7p)同樣會泛夠組 織二維流形(2-manifold)類型的實體,但不能組織三維流形(3-manifold)類型的實體,情 況與半邊相似。
[0040] 相對的,作為半邊(Half-edge)結(jié)構(gòu)向高維空間的拓展,三維組合圖(3D CombinatorialMap)結(jié)構(gòu)可以組織三維流形(3D-manifold)。三維流形是指獨立的 d-cells通過(d-1)-cells以粘貼方式構(gòu)成的對象,該結(jié)構(gòu)中的核心空間單元稱為"投射 (dart) ",類似于"半邊(Half-edge)"(CGALv4. 0,http:www.cgal.org;Brisson, (1990). Representationofd-DimensionalGeometricObjects.Ph.DThesis) 〇 針對三維空間中 的相遇(meet)情況,三維組合圖可以組織存在點相鄰(meetatOD)、線相鄰(meetatlD)、 面相鄰(meetat2D)關(guān)系的三維實體集群。盡管如此,根據(jù)筆者目前文獻搜索,至今尚未有 文獻明確指出通過三維組合圖組織的三維實體如何實現(xiàn)消隱,典型的包括相接于多個面片 的投射(dart)如何根據(jù)其多個(>2)相接面片的可見性決定該投射(dart)的可見性。
[0041] (5)IS019l〇7'SpatialSchema',GML3,CityGML中的模型及拓撲
[0042] 值得注意的是,針對點相鄰、線相鄰、面相鄰,它們在不同文獻與標準中有著不同 表達,如在IS019107'SpatialSchema'、GML3、CityGML中的表達。其中,IS019107'Spatial Schema'中是一個抽象規(guī)范,其拓撲關(guān)系也只是抽象定義;而OGC中的GML3是作為抽象的 IS019107'SpatialSchema'的具體實現(xiàn);而CityGML的空間特征由GML3的幾何模型對象 表達,可見CityGML同樣基于IS019107'SpatialSchema',事實上,CityGML只用了GML3 幾何模型的一部分。在GML3和CityGML中,組合實體可細分為聚合(Aggregate)、復形 (Complex)、復合(Composite)三類,三者之間并不互斥,而是繼承關(guān)系。更為具體的,
[0043] (i)聚合(Aggregate)
[0044] 針對聚合(Aggregate),組件之間的空間關(guān)系不受約束,它們可以是分離、疊置、接 觸或連接。特別的,在三維空間中稱為MultiSolid。由于MultiSolid中體與體可以疊置, 故而不是研究重點;
[0045] (ii)復形(Complex)
[0046] 與聚合相比,復形(Complex)在拓撲上受到約束,它的部件不能疊置,但可以分離 或者沿著共同邊界接觸。特別的,在三維空間中,體與體之間不能疊置,但可以分離、可以共 享面/線/點。換言之,包含了分離、點相鄰、線相鄰、面相鄰這四種情況。
[0047] (iii)復合(Composite)
[0048] 復合(Composite)是一種特殊的復形。它包含的元素必須是同一維度的。其組 件的內(nèi)部可以分離,但必須沿著共同邊界拓撲連接。特別的,在三維空間中稱為復合實體 (CompositeSolid)。在復合實體(CompositeSolid)中,體與體之間必須沿著公共面/邊/ 點拓撲連接。換言之,包含了點相鄰、線相鄰、面相鄰這三種情況。
[0049] (6)在OracleSpatial中的模型及拓撲
[0050] 在商業(yè)軟件Oracle中,OracleSpatial模塊用于組織二維與三維空間數(shù)據(jù)。其 中,在組織三維實體數(shù)據(jù)時,實體間拓撲關(guān)系同樣極大地參考了GML/IS0規(guī)范,但具體分 類上有所區(qū)別:在Oracle中,三維實體可分為復合實體(CompositeSolid)與實體集合 (Collection)兩類。
[0051] 其中,復合實體(CompositeSolids)是簡單實體(SimpleSolid)的組合,也稱組 合實體(CombinedSolid)。復合實體(CompositeSolids)通過簡單實體彼此共享拓撲基 元聚合而成,這里的共享拓撲基元只能是2維的面,因為:在定義上,復合實體(Composite Solids)通過去除共享拓撲基元必須能夠轉(zhuǎn)換為簡單實體(SimpleSolid),也即復合實體 是連通的。換言之,只包含了面相鄰該單一情況。構(gòu)造復合實體的簡單實體可以是凸多面 體,也可以是凹多面體。
[0052] 而針對實體集合(Collection),可分為同質(zhì)實體集合(HomogeneousCollection) 與異質(zhì)實體集合(HeterogeneousCollection)。同質(zhì)實體集合(HomogeneousCollection) 由相同類型的實體聚集而成,包括多點、多線、多面、多實體,同質(zhì)實體集合的構(gòu)造元素類型 從名稱上便可辨別。異質(zhì)實體集合(HeterogeneousCollection)是由不同類型的實體混 合而成。如上所述,針對在三維空間中的同質(zhì)實體集合,稱為多實體。多實體與以上提及的 復合實體(CompositeSolids)有所區(qū)別,因此多實體增加了分離性的判別,也即多實體不 僅禁止體與體之間相交,而且禁止用于封閉體的面與面之間相交。故而,在多實體中,實體 與實體之間的共享基元只允許是1維線或〇維點。換言之,只包含了分離、點相鄰、線相鄰 這三種情況。
[0053] 由上可見,針對三維實體之間拓撲關(guān)系,無論是采用聚合、復形、復合的分類體系, 還是采用復合實體、實體集合的分類體系,本質(zhì)上都歸結(jié)于如何處理相離(disjoint)、點相 鄰(meetatOD)、線相鄰(meetatlD)、面相鄰(meetat2D)這四種最基本拓撲類型。
[0054] 以上分析了三維實體如何組織以及實體間拓撲關(guān)系如何分類,以下重點針對"現(xiàn) 有的事實上涉及到各類拓撲關(guān)系的實體消隱研究"給予深入分析與歸類。具體包括:
[0055] (1)涉及單個凸多面體的消隱研究
[0056] 如上所述,Roberts算法于1963年提出,它是已知最早提出的消隱算法,它是一種 線消隱算法,但其處理對象只局限于凸多面體對象、
[0057] (2)涉及單個凹多面體的消隱研究
[0058] 涉及單個凹多面體消隱處理的研究包括(Rappaport,D. (1986) ?ALinear AlgorithmforEliminatingHidden-linesfromaPolygonalCylinder. TheVisualComputer,no. 2,pp. 44-53 ;Stroud,I.A. ,Nagy,H. (2011).TheCAD InterfaceandGraphicalOutput[M].SolidModellingandCADSystems,Springer London,pp.339-365. ;Kettner,L. ,ffelzl,E. (1997).ContourEdgeAnalysisfor PolyhedronProjections[M].SpringerBerlinHeidelberg;張佩翔?(1989)?凹多面體表 面的圖示規(guī)律及在消隱處理中的應用.吉林化工學院學報,6(3) :60-67;卓守鵬.(1982). 利用棱線的圖示規(guī)律處理凹多面體的隱藏線[J].浙江工業(yè)大學學報,(3) :9-24;洪炳镕, 張棟,范義文.(1980).多面體有效隱藏相關(guān)面的自動判定算法[J].哈爾濱工業(yè)大學學 報,(6) :40-45;張棟.(1988).關(guān)于計算隱線消除算法的研究.碩士學位論文,哈爾濱工 業(yè)大學;洪炳镕,張棟.(1989).基于相關(guān)遮蔽面的多面體隱線消除的快速算法[J].哈爾 濱工業(yè)大學學報,(6):25-31,42;洪炳镕,張棟.(1989). -種基于相關(guān)遮蔽面的多面體隱 線消除算法[J].計算機學報,(9) :717-720.)。值得指出的是,所謂被別的多面體遮蔽,實 際上即被別的多面體的前向面遮蔽。
[0059] (3)涉及多個凸多面體的消隱研究
[0060] 當前消隱研究中,有的消隱對象涉及多個凸多面體。這些凸多面體之間事 實上存在多種拓撲關(guān)系,其中以分離關(guān)系居多,典型的包括(deBerg,M.,Gray,C. (2007).ComputingtheVisibilityMapofFatObjects.SpringerBerlin Heidelberg,pp. 251-262;毛峽,沈巍,趙興圓.(2009).基于點線關(guān)系的透視圖消隱算法 [J].北京航空航天大學學報,35(8) :925-928, 937 ;高升宇.(2002).三維空間多面體消隱 問題中可見子段的求解與歸并[J].渭南師范學院學報,17(5) :64-66)。
[0061] 針對三維柱狀圖的消隱算法眾多,事實上每個柱狀實體都是凸多面體,而這些柱 狀實體之間基本呈現(xiàn)分離、面相鄰、邊相鄰這三類關(guān)系。
[0062] 其它研究還包括三維實體相互貫穿情況(即相交情況)下的消隱方法(曾接 賢,高滿屯,李建軍.(1998). -種復雜形體消隱的新方法[J].南昌航空工業(yè)學院學 報,1:22-27)。事實上,這種貫穿(相交)情況是不被允許的。
[0063] (4)涉及多個凹多面體的消隱研究
[0064] 還有的消隱對象涉及多個凹多面體。事實上,這些凹多面體之間存在多種拓撲關(guān) 系,其中以分離、面相鄰這兩類居多。
[0065] 特別的,朱仁芝等闡述了針對帶洞的三維實體如何消隱處理,但研究對象只是個 別凹體對象,并不是針對大量實體集群對象,并不具備普遍適用性(朱仁芝,太美花,鄧 益民.(1996).凹體輪廓線算法及實現(xiàn)[J].計算機科學,23(2) :58-60;朱仁芝,江涌, 陶濤,劉磊.(1998).利用3維重建技術(shù)進行線框模型消隱的算法[J].計算機工程與應 用,5:19-20;朱仁芝,太美花,鄧益民.(1992).三維形體消隱和相貫線的一種新算法[J]. 中國科學技術(shù)大學學報,22 (3) : 295-302 ;朱仁芝,劉磊,江涌,陶濤,盧繼軍.(1999).由 表面模型表達的三維形體的一種消隱算法[J].計算機工程與設計,20(1) :56-60.)
[0066] (5)涉及凸多面體和凹多面體混合集合的消隱處理
[0067] 涉及凸多面體和凹多面體混合集合的消隱處理,具體包括(袁超.(2006).多個凹 凸形多面體的深度消隱算法研究[J].四川理工學院學報(自然科學版),19(4) : 104-107 ; 袁超.(2006).多個凹凸形多面體的深度優(yōu)先消隱算法研究[J].計算機工程與應 用,28 (9) : 97-99, 102.)。這些凹體與凸體之間可能存在多種拓撲關(guān)系,往往包括分離、邊相 鄰、面相鄰等關(guān)系。
[0068] 可見,現(xiàn)有三維實體集合的眾多消隱方法,對集合中每個三維實體的形態(tài)有所局 限(即大多研究都要求三維實體是不帶穿洞的體,只有少量研究允許體有穿洞),同時集合 中體與體之間的拓撲基元如何實現(xiàn)消隱的研究并不系統(tǒng)與全面,往往只允許體與體之間分 離、點相鄰、線相鄰、面相鄰中的一種或幾種,并沒有給予以上關(guān)系并存時三維實體集群如 何實現(xiàn)消隱的完善方案。
【發(fā)明內(nèi)容】
[0069] 為克服現(xiàn)有技術(shù)缺陷,本發(fā)明提供一種顧及拓撲的三維實體群的線消隱方法,該 線消隱方法的著眼點在于"顧及拓撲"。
[0070] 本發(fā)明的技術(shù)方案提供一種顧及拓撲的三維地理空間實體群的線消隱方法,所述 三維地理空間實體群的三維空間數(shù)據(jù)模型包括節(jié)點、邊、環(huán)、平面片和體這5類基元,其中, 點是〇維基元,邊與環(huán)是1維基元,平面片是2維基元,體是3維基元;
[0071] 預設的規(guī)則如下,
[0072] 規(guī)則1,待消隱的每個實體必須是剖分完全的;
[0073] 規(guī)則2,當某體與另一個體存在的公共元素為2維時,稱只共面;
[0074] 規(guī)則3,當某體與另一個體存在的公共元素為1維時,稱只共邊;
[0075] 規(guī)則4,當某體與另一個體存在的公共元素為0維時,稱只共點;
[0076] 規(guī)則5,當某體與另兩個體存在的公共元素分別為2維時,稱共面面,按照只共面 的情況處理;
[0077] 規(guī)則6,當某體與另兩個體存在的公共元素分別為1維與2維時,稱共邊面,按照只 共面的情況處理;
[0078] 規(guī)則7,當某體與另多個體存在的公共元素分別為1維時,稱共邊邊,按照只共邊 的情況處理;
[0079] 規(guī)則8,當某體與另兩個體存在的公共元素分別為0維與2維時,稱共點面,按照只 共面的情況處理;
[0080] 規(guī)則9,當某體與另兩個體存在的公共元素分別為0維與1維時,稱共點邊,按照只 共邊的情況處理;
[0081] 規(guī)則10,當某體與另多個體存在的公共元素分別為0維時,稱共點點,按照只共點 的情況處理;
[0082] 基于以上預設規(guī)則,進行消隱過程,包括以下步驟,
[0083] 步驟1,顧及拓撲關(guān)系的消隱預處理,包括進行平面片的分類和邊的分類,
[0084] 進行平面片的分類如下,
[0085] (i)針對體與體之間存在只共面情況時,設定公共面為不可見面;
[0086] (ii)針對體與體之間存在只共邊情況時,本步驟不做處理;
[0087] (iii)針對體與體之間存在只共點情況時,本步驟不做處理;
[0088] 進行邊的分類如下,
[0089] (i)針對體與體之間存在只共面情況時,公共面包含的邊暫設定為可見面;
[0090] (ii)針對體與體之間存在只共邊情況時,暫設定公共邊為可見邊;
[0091] (iii)針對體與體之間存在只共點情況時,本步驟不做處理;
[0092] 步驟2,擴展的第一類線消隱處理,包括子步驟如下,
[0093] 步驟2. 1,進行后向面剔除,包括找到法向量與視線方向一致的平面片,這些平面 片稱后向面,后向面設定為不可見面,不參與后續(xù)步驟3;找到法向量與視線方向不一致的 平面片,這些平面片稱前向面,前向面設定為可見面;
[0094] 步驟2. 2,進行平面片的分類如下,
[0095] (i)將通過后向面剔除找到的所有不可見面,加上步驟1所得所有不可見面,取和 得到完整的不可見面簇;
[0096] (ii)根據(jù)通過后向面剔除找到的可見面得到完整的可見面簇。
[0097] 步驟2. 3,針對僅相接于2個面的邊,進行邊的可見性判定如下,
[0098] (i)相接于2個不可見面的邊,設定為不可見邊;
[0099] (ii)相接于1個可見面和1個不可見面的邊,暫設定為可見邊;
[0100] (iii)相接于2個可見面的邊,暫設定為可見邊;
[0101] 步驟2. 4,進行邊的分類,包括將步驟2. 3得到的所有可見邊,加上步驟1得到的所 有可見邊,取和得到完整的可見邊簇,步驟2. 3得到的所有不可見邊為完整的不可見邊簇;
[0102] 步驟3,擴展的第二類線消隱處理,包括子步驟如下,
[0103] 步驟3. 1,邊的細分,包括以步驟2. 4所得完整可見邊簇中的每條邊為潛在可見 邊,判斷潛在可見邊是否被可見面遮擋,當被可見面部分遮擋時,對此邊根據(jù)與平面片的相 交情況進進行裁切,裁切后的最終每條邊稱為最簡邊;
[0104] 步驟3. 2,最簡邊的可見性判定,包括采用最簡邊的中點的可見性來代表整條最簡 邊的可見性。
[0105] 而且,步驟3. 2,中判斷最簡邊的中點的可見性如下,
[0106] 最簡邊的中點為三維空間中的點,沿著視線方向所在的空間直線,三維空間中的 點在平面片所在超平面片中一定有一個投影點;此時,投影點和平面片位于同一個超平面 中,通過判斷投影點是否位于二維多邊形內(nèi),得到最簡邊的中點的可見性。
[0107] 而且,根據(jù)消隱過程所得結(jié)果,最終可視化效果中可見線的樣式和不可見線的樣 式都采用自定義設置。
[0108] 與現(xiàn)有三維實體集合線消隱的相關(guān)技術(shù)相比,本發(fā)明能夠?qū)崿F(xiàn)三維實體集群的線 消隱處理,其中,每個三維實體既可以是凸的、也可以是凹的,每個三維實體既可以帶穿洞、 也可以不帶穿洞,同時這些三維實體之間的拓撲關(guān)系可以是分離的、點相鄰、線相鄰、面相 鄰并存(也即該三維實體集群可以是二維流形或三維流形的形式)。此外,最終可視化效果 中線段的樣式(包括可見線的樣式、不可見線的樣式)都可以自定義設置,對實體的各種情 況都能準確進行處理。本發(fā)明提出的線消隱方法,主要可應用于三維產(chǎn)權(quán)證設計中的圖形 可視化部分。三維產(chǎn)權(quán)證是地籍管理領域中針對三維產(chǎn)權(quán)體的產(chǎn)權(quán)證書,三維產(chǎn)權(quán)證的設 計是實現(xiàn)三維地籍的重要環(huán)節(jié),而三維地籍的建設是地籍管理領域至關(guān)重要。針對三維產(chǎn) 權(quán)證,由于要通過二維圖面來展示三維宗地的立體形態(tài),故而通過消隱處理增強真實感尤 為關(guān)鍵。本發(fā)明隸屬于三維地籍建設的相關(guān)項目(名稱為"土地空間使用權(quán)管理關(guān)鍵技術(shù) 及規(guī)范研究"),涉及本
【發(fā)明內(nèi)容】
的三維產(chǎn)權(quán)證設計是該項目的一部分。
【專利附圖】
【附圖說明】
[0109] 圖1為本發(fā)明實施例采用的三維空間數(shù)據(jù)模型中各類基元示意圖,其中圖1 (a)為 頂點示意圖,圖1(b)為邊示意圖,圖1(c)為平面片示意圖,附圖1(d)為體示意圖。
[0110] 圖2為本發(fā)明實施例三維空間直角坐標系的解析原理示意圖。
[0111] 圖3為本發(fā)明實施例規(guī)則1示意圖,其中圖3 (a)為完全剖分前示意圖,圖3(b)為 完全剖分后不意圖。
[0112] 圖4為本發(fā)明實施例規(guī)則2-4示意圖,其中圖4 (a)為規(guī)則2示意圖,圖4(b)為規(guī) 則3示意圖,圖4(c)為規(guī)則4示意圖。
[0113] 圖5為本發(fā)明實施例規(guī)則5-10示意圖,其中圖5 (a)為規(guī)則5示意圖,圖5(b)為規(guī) 貝1J6示意圖,圖5(c)為規(guī)則7示意圖,圖5(d)為規(guī)則8示意圖,圖5(e)為規(guī)則9示意圖, 圖5(f)為規(guī)則10示意圖。
[0114] 圖6為本發(fā)明實施例規(guī)則2-10的解釋示例示意圖,其中圖6(a)為解釋示例的體 信息示意圖,圖6(b)為解釋示例的頂點信息示意圖。
[0115] 圖7為本發(fā)明實施例典型案例的消隱過程示意圖,其中圖7(a)為輸入數(shù)據(jù)(線框 模式)示意圖,圖7(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖7(c)為第一類隱藏線(采用虛 線表達)示意圖,圖7(d)為第二類隱藏線(采用虛線表達)示意圖。
[0116] 圖8為本發(fā)明實施例應用于卓越世紀中心的消隱過程示意圖,其中圖8 (a)為輸入 數(shù)據(jù)(線框模式)示意圖,圖8(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖8(c)為第一類隱藏 線(采用虛線表達)示意圖,圖8(d)為第二類隱藏線(采用虛線表達)示意圖。
[0117] 圖9為本發(fā)明實施例應用于西部通道的消隱過程示意圖,其中圖9(a)為輸入數(shù) 據(jù)(線框模式)示意圖,圖9(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖9(c)為放大后局部圖 (采用線框模式)示意圖,圖9(d)為局部圖完全消隱后的輸出結(jié)果示意圖,圖9(e)為局部 圖的第一類隱藏線(采用虛線表達)示意圖,圖9(f)為局部圖的第二類隱藏線(采用虛線 表達)示意圖。
[0118] 圖10為本發(fā)明實施例應用于供電局的消隱過程示意圖,其中圖10(a)為輸入數(shù)據(jù) (線框模式)示意圖,圖10(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖10(c)為第一類隱藏線 (采用虛線表達)示意圖,圖10(d)為第二類隱藏線(采用虛線表達)示意圖。
[0119] 圖11為本發(fā)明實施例應用于華潤萬象城的消隱過程示意圖,其中圖11 (a)為輸入 數(shù)據(jù)(線框模式)示意圖,圖11 (b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖11 (c)為第一類隱 藏線(采用虛線表達)示意圖,圖11 (d)為第一類隱藏線(采用點點表達)示意圖,圖11 (e) 為第二類隱藏線(采用虛線表達)示意圖,圖11 (f)為第二類隱藏線(采用點線表達)示 意圖。
[0120] 圖12為本發(fā)明實施例應用于會展中心的消隱過程示意圖,其中圖12(a)為輸入數(shù) 據(jù)(線框模式)示意圖,圖12(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖12(c)為第一類隱藏 線(采用虛線表達)示意圖,圖12(d)為第一類隱藏線(采用點點表達)示意圖,圖12(e) 為第二類隱藏線(采用虛線表達)示意圖,圖12(f)為第二類隱藏線(采用點線表達)示 意圖。
[0121] 圖13為本發(fā)明實施例應用于瀚盛花園B1建筑體的消隱過程示意圖,其中圖13(a) 為輸入數(shù)據(jù)(線框模式)示意圖,圖13(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖13(c)為第 一類隱藏線(采用虛線表達)示意圖,圖13(d)為第二類隱藏線(采用虛線表達)示意圖。
[0122] 圖14為本發(fā)明實施例應用于瀚盛花園B3建筑體的消隱過程示意圖,其中圖14 (a) 為輸入數(shù)據(jù)(線框模式)示意圖,圖14(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖14(c)為第 一類隱藏線(采用虛線表達)示意圖,圖14(d)為第二類隱藏線(采用虛線表達)示意圖。
[0123] 圖15為本發(fā)明實施例應用于瀚盛花園B4建筑體的消隱過程示意圖,其中圖15(a) 為輸入數(shù)據(jù)(線框模式)示意圖,圖15(b)為完全消隱后的輸出數(shù)據(jù)示意圖,圖15(c)為第 一類隱藏線(采用虛線表達)示意圖,圖15(d)為第二類隱藏線(采用虛線表達)示意圖。
【具體實施方式】
[0124] 本發(fā)明提供的方法可基于計算機技術(shù)實現(xiàn)自動運行。以下結(jié)合附圖和實施例詳細 說明本發(fā)明技術(shù)方案。
[0125] 本發(fā)明的研究內(nèi)容屬于完全基于物空間的消隱方法。本發(fā)明提出的消隱方法,是 在傳統(tǒng)線消隱方法的基礎上發(fā)展而來。但本發(fā)明提出的消隱方法又不同于傳統(tǒng)線消隱方 法,它既能實現(xiàn)二維流形(2-manifold)類型、又能實現(xiàn)三維流形(3-manifold)類型的三維 實體集群的消隱處理。之所以如此,是因為本發(fā)明考慮了:
[0126] (1)單個三維實體形體的特殊性
[0127] 在本發(fā)明中,作為消隱處理對象的三維實體可以是凸的,也可以是凹的,還可以是 帶"穿洞(through-hole)"的。同時,這里的"穿洞"可以是單個三維實體先天具備的,也可 以是后天由于體與體之間疊置后的縫隙發(fā)展而來。針對這些情況,現(xiàn)有文獻與研究幾乎不 曾考慮。
[0128] (2)三維實體之間拓撲關(guān)系的特殊性
[0129] 在本發(fā)明中,作為消隱處理對象的三維實體之間可以是相離、點相鄰、線相鄰、面 相鄰?,F(xiàn)有的文獻與研究或者重點研究單個三維實體的消隱,或者關(guān)注處于相離關(guān)系的三 維實體集合的消隱,或者涉及存在分離、面相鄰的三維實體集合的消隱,但沒有針對同時存 在分離、點相鄰、線相鄰、面相鄰關(guān)系的三維實體集合如何消隱提出解決方案。
[0130] 本發(fā)明是具備重要意義,因為在三維建筑體集群、三維產(chǎn)權(quán)體集群、三維樓棟集群 中,針對建筑體與建筑體之間、產(chǎn)權(quán)體與產(chǎn)權(quán)體之間、房屋與房屋之間,存在著大量的分離、 點相鄰、線相鄰、面相鄰關(guān)系,如何實現(xiàn)這些三維實體集群實際案例的消隱處理,對于地籍 管理以及房產(chǎn)可視化都具有重大價值。
[0131] 本發(fā)明實現(xiàn)消隱采用的三維空間數(shù)據(jù)模型參見附圖1。該模型包括節(jié)點、邊、 環(huán)、平面片、體這5類基元。其中,點是0維基元,邊與環(huán)是1維基元,平面片是2維基 元,體是3維基元,該模型同樣遵循"0維基元-1維基元-2維基元-3維基元"的層次 性構(gòu)造原則,即"點-邊-環(huán)-平面片-體"的構(gòu)造層次性。該模型中,高維基元使用針 對低維基元的引用。該模型是在"面向地籍的三維空間數(shù)據(jù)模型"的基礎上發(fā)展而來, 詳見(郭仁忠,應申,李霖.(2012).基于面片集合的三維地籍產(chǎn)權(quán)體的拓撲自動構(gòu)建 [J] ?測繪學報,41 (4) : 620-626 ;Guo,R.Z.,Yu,C.B.,Zhao,Z.G.,Li,L.,Ying,S. (2012) ? LogicalDesignandImplementationoftheDataModelfor3DCadastreinChina. 3rd InternationalWorkshopon3DCadastres:DevelopmentsandPractices, 25_260ctober, Shenzhen,China,pp. 113-136.)。具體如下:
[0132] (1)節(jié)點(Point)
[0133] 節(jié)點是嵌入在三維空間中的一類0維基元,它記錄了X,Y,Z坐標。
[0134] 節(jié)點在數(shù)據(jù)庫中一般也稱Node。節(jié)點在歐拉公式中一般記為Vertex。
[0135] (2)邊(Edge)
[0136] 邊是嵌入在三維空間中的一類1維基元,它是由起始節(jié)點和終止節(jié)點封閉的一條 有向直線段。邊的物理方向由起始節(jié)點指向終止節(jié)點。邊的起始節(jié)點與終止節(jié)點不能夠是 同一個點。
[0137] 邊通常也記為弧段(Arc)或段(Segment)。邊同胚于1維流形。
[0138] (3)環(huán)(Ring)
[0139] 環(huán)是嵌入三維空間中的一類1維基元,它由至少3條邊封閉而成,這些邊形成一個 集合,稱為環(huán)的構(gòu)造邊集合。環(huán)是1維基元,邊是1維基元,且環(huán)是邊的聚合。環(huán)是封閉的, 即構(gòu)成環(huán)的第一條邊和最后一條邊具有公共節(jié)點。
[0140] 盡管以上沒有顯式約束環(huán)的所有構(gòu)造邊必須位于同一個平面上,但直接引用環(huán)對 象的只有平面片對象,而平面片上所有點在同一平面上,所以默認環(huán)的所有構(gòu)造邊位于同 一個平面上。環(huán)通常也記為循環(huán)(Loop)或圈(Cycle)。
[0141] (4)平面片(Facet)
[0142] 平面片是嵌入于三維空間中的一類2維基元,它是由唯一外環(huán)、零至多個內(nèi)環(huán)共 同封閉而成的區(qū)域。平面片的邊界是環(huán)。平面片的唯一外環(huán)上的邊和所有內(nèi)環(huán)上的邊共同 形成了一個集合,該集成稱為平面片的構(gòu)造邊集合。一個平面片至少包含3條邊。平面片 是相對簡單多邊形,可以是凸的,可以是凹的。當一個平面片只由3條邊構(gòu)成時,平面片退 化為三角形。
[0143] 平面片具有法向量。在平面片中任意一個環(huán)內(nèi),其構(gòu)造邊排序是有序的,即構(gòu)造邊 集合有一定的走向,也即前一條邊與后一條邊一定有公共節(jié)點。如下指定:唯一外環(huán)的走向 為逆時針,內(nèi)環(huán)的走向為順時針。同時,每條邊本身有物理方向,即從邊的起始節(jié)點指向邊 的終止節(jié)點。但在同一個環(huán)內(nèi),并不是所有邊的方向都一致,也即前一條邊的終止節(jié)點與后 一條邊的起始節(jié)點并不一定是同一個點。因此,需要一個統(tǒng)一規(guī)則來決定平面片的法向量, 通常采用右手定則(即四指方向為平面片的唯一外環(huán)中邊的環(huán)繞方向,大拇指方向為法向 量方向)。進一步的,當平面片的唯一外環(huán)的邊集合確定后,該邊集合的環(huán)繞方向就與每條 邊的本身方向作比較,如如一致則該條邊標記為"+",否則該邊標記為"-"。
[0144] 任一平面片都具有兩側(cè)。因為每個平面片都有一個所在超平面。該超平面片將三 維空間分為兩個部分,一般把平面片法向量所在一側(cè)稱為正面,把異于平面片法向量所在 一側(cè)稱為背面。
[0145] (5)體(Body)
[0146] 體是嵌入于三維空間中一類3維基元,它由至少4個平面片封閉而成。體的邊界 是平面片,它們形成一個集合,稱體的構(gòu)造平面片集合。針對每個體,由于其內(nèi)部不存在其 它基兀,所以體也稱為最小體。
[0147] 本發(fā)明中消隱方法采用的三維空間數(shù)據(jù)模型中各類基元的詳細情況如上所述。 更為具體的,附圖1給出了該模型中各類基元的直觀圖形解釋。更為具體的,附圖1(a) 描述頂點實體v;附圖1(b)描述邊實體e,其起點為vl,其終點為v2;附圖1(c)描述平 面片中外環(huán)走向以及如何標記邊的方向,其中,該平面片的唯一外環(huán)走向為逆時針(即 1 -2-3-4-5-6-7-8_9),邊el包含于該外環(huán),且邊el本身方向為3_4,邊el方向與唯一外環(huán) 走向一致,故而標記為+,邊e2的方向與唯一外環(huán)走向同樣一致而標記為+,邊e3的方向與 唯一外環(huán)走向不一致而記為-,以此類推。附圖1 (d)描述體bodyl和體body2之間的平面 片factl,該平面片的唯一外環(huán)走向為逆時針(即p-q-r-s),其法向量朝上,平面片factl 法向量朝向體bodyl的外部,故而此時平面片factl作為前向面,體bodyl作為后向體;平 面片factl法向量朝向體body2的內(nèi)部,故而此時平面片factl作為后向面,體body2作為 前向體。
[0148] 具體實施時,本領域技術(shù)人員可根據(jù)元素自行設定相應類圖,例如:投影前的 三維節(jié)點(Vertex)包含初始X值(_3d_x)、初始Y值(_3d_y)、初始Z值(_3d_z)等成 員;投影后的二維節(jié)點(Point)包含平面X值(x)、平面Y值(y)等成員;邊(Segment) 包含起始節(jié)點(beginVertex)、終止節(jié)點(endVertex)、鄰接平面片集合(ajoinFace)、 可見性(visibility)等成員;平面片(Face)包含唯一外環(huán)(outerRing)、零至多個內(nèi) 環(huán)(innerRings)、所有邊集合(listSegment)、所在超平面的平面方程(equation)、可見 性(visibility)等成員;體(Body)包含平面片集合(listFace)、邊集合(listSegment) 等成員;拓撲基元容器(TopoElementCollection)包含節(jié)點集合(listVertex)、邊集合 (listSegment)、平面片集合(listFace)、體集合(listBody)、只共享面情況時所有公共面 個數(shù)(specl_Face)、只共享面情況時所有公共面包含的邊個數(shù)(specl_Segment)、只共享 邊情況時所有公共邊個數(shù)(spec2_Segment)、只共享點情況時所有點公共點個數(shù)(spec3_ Vertex)、可見面總個數(shù)(vlistFace)、不可見面總個數(shù)(ivlistFace)、可見邊總個數(shù) (vlistSegment)、不可見邊總個數(shù)(ivlistSegment)等成員。
[0149] 本發(fā)明的著眼點為"顧及拓撲",針對顧及拓撲的三維實體群的線消隱,本發(fā)明提 出10條規(guī)則。后續(xù)的【具體實施方式】遵循該10條規(guī)則發(fā)展而來。
[0150] 需要注意的是,以下會頻繁地用到"共面"、"共邊"、"共點",而稱呼"共面(邊、 點)",是指共享的最高維度的基元是"面(邊、點)"。之所以這樣做,是因為面是2維基元、 邊是1維基元、點是〇維基元,而基于高一維度的基元相鄰必然包括基于低一維度的基元相 鄰。例如,共"面"時,必然存在共"邊(即面包含的邊)"以及共"點(面包含的點)",此時 稱"既共面又共邊還共點",是沒有意義的,故而只稱"共面";又如,共"邊"時,必然存在共 "點(即邊包含的點)",此時稱"既共邊又共點",同樣沒有意義,故而只稱"共點"。簡而言 之,如果存在公共2維基元,則稱存在"共面";如果存在公共1維基元,則稱存在"共邊";如 果存在公共0維基元,則稱存在"共點"。
[0151] 由以上定義可知,1維基元除了'邊'還有'環(huán)'。那存在公共1維基元時,是否還 需要稱存在"共環(huán)"?事實上,針對任意一個平面片,其包含的每個環(huán)本質(zhì)上都是由邊構(gòu)成, 且其唯一外環(huán)包含的邊與所有內(nèi)環(huán)包含的邊在給予消隱時采用相同方法對待,故而以下無 論是唯一外環(huán)包含的邊還是所有內(nèi)環(huán)包含的邊都簡稱邊,而且存在公共1維基元時,只稱 存在"共邊"而不稱"共環(huán)"。這樣,本發(fā)明能夠解決體中有"穿洞"的情況。
[0152] 同時解釋幾個重要名詞。其中,"簇(Cluster)"指具備相同特性的同類實體形成 的集合,如可見面簇、不可見面簇、可見邊簇、不可見邊簇。"潛在可見邊"指的是當前可見、 但通過進一步判斷不一定可見的邊。
[0153] 本發(fā)明采用的規(guī)則具體如下:
[0154] 規(guī)則1 (剖分完全規(guī)則):待消隱的每個實體必須是剖分完全的。所謂剖分完全, 是指:若體A的平面片與相鄰體B的平面片存在相交,則以上平面片與平面片之間應該剖分 完全,即相交部分應該是唯一的,也即公共平面片只存儲一次但可被引用多次;若體A的邊 與相鄰體B的邊存在相交,則以上邊與邊之間應該也是剖分完全的,即相交部分應該也是 唯一的,即公共邊只存儲一次但可被引用多次;若體A的頂點與相鄰體B的頂點重合,則相 交部分應該也是惟一的,即重合頂點只存儲一次但可被引用多次。總而言之,存在相交情況 的則必須給予打斷,打斷后的相同基元只應該存儲一次,更高維的基元只使用對于低維基 元的引用。
[0155] 直觀地,如附圖3(a)所示,體1的平面片ele2e3e4(用構(gòu)成邊表示,或者用構(gòu)成點 表不的vlv2v3v4)與體2的平面片e5e6e7e8 (也即v5v6v7v8)相交,體1的el和e2與體2 的e8和e5分別相交,需要完全剖分。當剖分結(jié)束后,如圖3(b)所示,體1的邊el分剖分 為邊ell和邊el2,體1的邊e2被剖分為邊e21和邊e22,體2的邊e5被剖分為邊e51和 邊e52,體2的邊e8被剖分為邊e81和邊e82 ;同時,體1的平面片ele2e3e4被剖分為2個 小平面片,體2的平面片e5e6e7e8也被剖分為2個小平面片,其中,平面片el2e21e51e81 為體1和體2剖分后的公共平面片,體1中另一個剖分后的平面片是elle81e51e22e3e4, 體2中另一個剖分后的平面片是el2e21e52e6e7e82 ;此外,體1和體3共享一個頂點,剖分 前,該共享頂點在體1中被存儲為v2并在體3中被存儲為v9,剖分后,它們合并為一個頂點 (記為vlO),體1和體3都只使用對于vlO的引用。
[0156] 值得注意的是,以上采用的三維空間數(shù)據(jù)模型事實上是一種建立在完全剖分基礎 的三維拓撲數(shù)據(jù)結(jié)構(gòu),即若平面片與平面片相交則剖分平面片、若線段與線段相交則打斷 線段、剖分之后相同實體(公共點、公共邊、公共面)只存儲一次時但被多次引用。換言之, 以上采用的三維空間數(shù)據(jù)模型默認滿足"規(guī)則1 (完全剖分規(guī)則)"。如果需要主動實現(xiàn)"規(guī) 則1",詳見(賀彪.(2011).三維地籍空間數(shù)據(jù)模型及拓撲構(gòu)建算法研究[D].博士論文, 武漢大學,159p;賀彪.李霖,郭仁忠,史云飛.(2011).趙志剛.(2012).三維地籍空間 數(shù)據(jù)拓撲構(gòu)建、維護及應用研究[D].博士論文,武漢大學,191p;夏俊.(2011).三維地籍 中計算幾何相關(guān)問題研究[Msc.].碩士論文,53p.)。
[0157] 規(guī)則2(只共面):當某體與另一個體存在的公共元素為2維時,稱只共面。
[0158] 具體的,針對兩個相鄰的體,如果存在公共平面片,則稱這兩個體只共面。存在1 個公共平面片,存在2個公共平面片,直至存在多個公共平面片,都稱為只共面。只共面的 情況簡記為specl。針對只共面情況(specl),認為公共面不可見,公共面包含的邊潛在可 見。
[0159] 直觀的,如附圖4(a)所示,體1和體2之間存在公共平面片ele2e3e4,則稱 體1和體2只共享面ele2e3e4。此時,公共平面片ele2e3e4不可見,其包含的邊集(即 el,e2,e3,e4)潛在可見。
[0160] 規(guī)則3 (只共邊):當某體與另一個體存在的公共元素為1維時,稱只共邊。
[0161] 具體的,針對兩個相鄰的體,如果存在公共邊,但不存在公共平面片,則稱這兩個 體只共邊。存在1條公共邊,存在2條公共邊,直至存在多條公共邊,都稱為只共邊。只共 邊的情況簡記為spec2。針對只共邊(speC2)情況,認為公共邊潛在可見。
[0162] 直觀的,如附圖4(b)所示,體1和體2之間存在公共邊e,但體1和體2之間不存 在任何公共平面片,則稱體1和體2只共享邊e。共享邊e潛在可見。
[0163] 規(guī)則4 (只共點):當某體與另一個體存在的公共元素為0維時,稱只共點。
[0164] 具體的,針對兩個相鄰的體,如果存在公共頂點,但既不存在公共邊,也不存在公 共平面片,則稱這兩個體只共點。存在1個公共頂點,存在2個公共頂點,直至存在多個公 共頂點,都稱為只共點。只共點的情況簡記為spec3。針對只共點(speC3)情況,其不影響 輸出結(jié)果(因為輸出結(jié)果為邊的顯示/隱藏,而這里指示公共點情況)。
[0165] 直觀的,如附圖4 (c)所示,體1和體2之間存在公共頂點V,但既不存在公共邊,也 不存在公共平面片,則稱兩個體只共享點V。
[0166] 以上是比較純粹的或只共面、或只共邊、或只共點的情況。事實上,實際情況中體 與體之間往往共面、共邊、共點3種情況同時存在,或者其中任意2種情況同時存在。針對 共面、共邊、共點可能同時存在的情況,需要進一步簡化,具體如下:
[0167] 規(guī)則5(共面面):當某體與另兩個體存在的公共元素分別為2維時,稱共面面。
[0168] 具體的,針對某體,如果存在兩個相鄰的體,與其中一個相鄰體只共面,與其中另 一個相鄰體也只共面,并且以上兩個公共面存在交集,該交集稱為共同邊,則以上共同邊是 否可見只判斷一次(只在判斷以上任意一個公共面包含的邊集是否可見時才考慮)。換言 之,即按照只共面(specl)的情況處理以上共同邊的可見性。
[0169] 直觀的,如附圖5(a)所示,針對體1,體1與體2共平面片ele2e3e4,同時體1與 體3共平面片ele5e6e7,并且以上兩個平面片存在交集,該交集即邊el,則邊el是否可見 只判斷一次--具體的,只在判斷公共平面片ele2e3e4包含的邊集(即el,e2,e3,e4)是 否可見時才考慮,而在判斷公共平面片ele5e6e7包含的邊集(即e5,e6,e7)是否可見時不 考慮;或者,只在判斷公共平面片ele5e6e7包含的邊集(即el,e5,e6,e7)是否可見時才考 慮,在判斷公共平面片ele2e3e4包含的邊集(即e2,e3,e4)是否可見時不考慮。
[0170] 規(guī)則6(共邊面):當某體與另兩個體存在的公共元素分別為1維與2維時,稱共 邊面。
[0171] 具體的,針對某體,如果存在兩個相鄰的體,且與其中一個相鄰體只共邊,與其中 另一個相鄰體只共面,并且以上公共邊包含于以上公共面的邊集中,則以上公共邊是否可 見只判斷一次(只在判斷以上公共面包含的邊集是否可見時才考慮)。換言之,即按照只共 面(specl)的情況處理以上公共邊的可見性。
[0172] 直觀的,如附圖5(b)所示,針對體1,體1與體2共平面片ele2e3e4,同時, 體1與體3共邊el,并且以上公共邊el存在于公共平面片ele2e3e4包含的邊集(即 el,e2,e3,e4)中,則判斷公共邊el是否可見只判斷一次--具體的,只在判斷公共平面片 ele2e3e4包含的邊集(即el,e2,e3,e4)是否可見時才考慮。
[0173] 規(guī)則7(共邊邊):當某體與另多個體(兩個或兩個以上)存在的公共元素分別為 1維時,稱共邊邊。
[0174] 具體的,針對某體,如果存在兩個相鄰的體,且與其中一個相鄰體只共邊,與其中 另一個相鄰體也只共邊,同時以上兩個相鄰體之間也只共邊而不共面,則以上兩個公共邊 集的交集稱共同公共邊。同樣的,當有新的相鄰體加入時,即針對某體,如果存在兩個上相 鄰的體,則所有相鄰體也只共邊而不共面(共邊存在于共同公共邊中);那么,以上所有體 的共同公共邊是否可見只判斷一次,且按照只共邊(speC2)的情況處理以上共同公共邊的 可見性。
[0175] 直觀的,如附圖5(c)所示,體1與體2共邊el,體1與體3也共邊el,體2與體3 也只共邊不共面(共邊el),則稱邊el為共同公共邊,且共同公共邊el的可見性只判斷一 次。
[0176] 規(guī)則8(共點面):當某體與另兩個體存在的公共元素分別為0維與2維時,稱共 點面。
[0177] 具體的,針對某體,如果存在兩個相鄰的體,與其中一個相鄰體只共點,且與其中 另一個相鄰體只共面,并且以上公共點屬于以上公共面的包含點集,則以上公共點只存儲 一次,以上公共面包含的點集中只使用對于該公共點的引用。換言之,即歸結(jié)于只共面 (specl)情況。事實上,這種情況并不影響輸出結(jié)果(因為輸出結(jié)果是邊的顯示/隱藏,而 這里指示公共點情況)。
[0178] 直觀的,如附圖5(d)所示,針對體1,體1與體3共頂點V,同時,體1與體2共平 面片ele2e3e4,且以上公共頂點v屬于以上公共平面片包含的點集,則以上公共頂點只存 儲一次,以上公共面ele2e3e4只使用針對v的引用。
[0179] 規(guī)則9(共點邊):當某體與另兩個體存在的公共元素分別為0維與1維時,稱共 點邊。
[0180] 具體的,針對某體,如果存在兩個相鄰的體,與其中一個相鄰體只共點,且與其中 另一個相鄰體只共邊,并且以上公共點屬于以上公共邊包含的點集,則以上公共點只存儲 一次,以上公共邊包含的點集中只使用對于該公共點的引用。換言之,即歸結(jié)于只共邊 (speC2)情況。事實上,這種情況并不影響輸出結(jié)果(因為輸出結(jié)果是邊的顯示/隱藏,而 這里指示公共點情況)。
[0181] 直觀的,如附圖5(e)所示,針對體1,體1與體3共頂點V,同時,體1與體2共邊 el,且以上公共頂點v屬于以上公共邊包含的點集,則以上公共頂點只存儲一次,以上公共 邊el只使用針對v的引用。
[0182] 規(guī)則10(共點點):當某體與另多個體(兩個或兩個以上)存在的公共元素分別 為0維時,稱共點點。
[0183] 具體的,針對某體,如果存在兩個相鄰的體,與其中一個體只共點,與其中另一個 體也只共點,同時以上兩個相鄰體之間也只共點,則它們共同的公共點稱共同公共點。同樣 的,當有新的相鄰體加入時,即針對某體,如果存在兩個以上相鄰的體,與所有相鄰體也只 共點于共同公共點;那么以上共同公共點只存儲一次,以上所有相鄰體中只存儲對共同公 共點的引用。換言之,即歸結(jié)于只共點(spec3)情況。事實上,這種情況并不影響輸出結(jié)果 (因為輸出結(jié)果是邊的顯示/隱藏,而這里指示公共點情況)。
[0184] 直觀的,如附圖5(f)所示,針對體1,體1與體3共頂點V,同時,體1與體2也共 頂點v,且體2與體3之間也只共點V,則v稱為共同公共點,體1體2體3都只使用對于v 的引用。
[0185] 針對其余情況,即多個體(兩個或兩個以上)之間同時存在多個公共面(兩個或 兩個以上公共面)、多個公共邊(兩個或兩個以上公共邊)、多個公共點(兩個或兩個以上 公共點)的情況,均可分解為規(guī)則2-10給予處理。附圖6給出了一個分解實例,其中圖 6(a)為解釋示例的體信息示意圖,圖6(b)為解釋示例的頂點信息示意圖。該實例中,8個 體相鄰,其中上層包括體1體2體3體4,下層包括體5體6體7體8 ;其中,體1由頂點 A,B,D,E,J,K,M,N構(gòu)成,體 2 由頂點B,C,E,F(xiàn),K,L,N,0 構(gòu)成,體 3 由頂點D,E,G,H,M,N,P,Q 構(gòu)成,體4由頂點E,F(xiàn),H,I,N,0,Q,R構(gòu)成,體5由頂點J,K,M,N,S,T,V,W構(gòu)成,體6由頂點 K,L,N,0,T,U,W,X構(gòu)成,體 7 由頂點M,N,P,Q,V,W,Y,Z構(gòu)成,體 8 由頂點N,0,Q,R,W,X,Z,A2 構(gòu)成。這8個體存在許多共點、共邊、共面情況,而且不是純粹的只共點(spec3)、只共邊 (spec2)。具體情況如下,
[0186] (1)體7與體8之間共面QNWZ,體7與體3之間共面PQNM,體7與體5之間共面 MNWV,這些都是只共面(specl)情況。類似的只共面(specl)情況還有很多,包括體5與體 6之間、體6與體2之間、體6與體8之間等。
[0187] (2)體1與體3之間存在共邊情況(即共邊EN)。但這不是純粹的只共邊情況,因 為邊EN同時也屬于體1與體2的公共面EBKN包含的邊集(即邊BK、邊KN、邊EN、邊BE)。 按照規(guī)則6 (共邊面)處理,即歸結(jié)于只共面(specl)情況。類似的需要按照規(guī)則6 (共邊 面)處理的情況還有很多,包括邊麗、邊QN、邊0N、邊KN等。
[0188] (3)同樣的,針對邊EN,還可以看作體1與體2的公共面(即EBKN)、體1與體3的 公共面(即EDMN)的共同邊。按照規(guī)則5 (共面面)處理,同樣歸結(jié)于只共面(specl)情況。 類似的,邊麗、邊QN、邊0N等也都可以按照規(guī)則5 (共面面)處理。
[0189] (4)體1與體8之間共頂點N。但是這不是純粹的只共頂點情況,因為頂點N還屬 于體1與體2的公共面EBKN包含的點集。按照規(guī)則8 (共點面)情況處理,即歸結(jié)于只共 面(specl)情況。同時,頂點N還可以看作體5與4、體3與體6、體7與體2的公共頂點, 也都按照規(guī)則8 (共點面)情況處理。
[0190] (5)如上所述,在該實例中,存在只共面(specl)、共邊面(歸結(jié)于specl)、共面 面(歸結(jié)于specl)、共點面(歸結(jié)于specl)這4種情況,不存在只共邊(speC2)、只共點 (spec3)、共邊邊(歸結(jié)于spec2)、共點邊(歸結(jié)于spec2)、共點點(歸結(jié)于spec3)這5種 情況。
[0191] 如以上案例的實際例子還有許多,特別發(fā)生在三維產(chǎn)權(quán)體與三維產(chǎn)權(quán)體相鄰、三 維建筑體與三維建筑體相鄰、三維宗地與三維宗地相鄰的情況中。在這樣的案例中,最終都 歸結(jié)于只共面(specl)的方式處理(如下表1,表2,表3),但并不意味著沒有共邊、共點的 情況發(fā)生,只是它們不是純粹的只共邊、只共點情況,采用以上規(guī)則2-10給予解決是合適 的。
[0192] 遵從以上提出的若干規(guī)則,下面詳細闡述實施例中該線消隱方法。
[0193] 實施例所提供針對顧及拓撲的三維實體群的線消隱,總共包含3個大步驟:步驟 1.顧及拓撲關(guān)系的消隱預處理,其主要針對公共面、公共面包含的邊、公共邊的可見性給 予初步判斷;步驟2.擴展的第一類線消隱處理,其主要針對傳統(tǒng)的第一類消隱情況給予擴 展,也稱自遮蔽(或自消隱、局部消隱),它發(fā)生在單個三維實體內(nèi)部;步驟3.擴展的第二 類線消隱處理,其主要針對傳統(tǒng)的第二類消隱情況給予擴展,也稱互遮擋(或互消隱、全局 消隱),它發(fā)生在多個三維實體之間。
[0194] 步驟1,顧及拓撲關(guān)系的消隱預處理
[0195] (1.1)平面片的分類
[0196] (i)針對體與體之間存在只共面情況時,設定公共面為不可見面。之所以這么,是 因為:公共面一定被包含該公共面的相鄰體所"自遮擋",同時可能被位于視線更前方的其 它體所"互遮擋",不可能出現(xiàn)可見情況,所以這里設定為不可見。公共面的個數(shù)記為slF。
[0197] (ii)針對體與體之間存在只共邊情況時,相接于該公共邊的面的可見性難以直接 判斷,本步驟不做處理。
[0198] (iii)針對體與體之間存在只共點情況時,相接于該公共點的面的可見性難以直 接判斷,本步驟不做處理。
[0199] (1.2)邊的分類
[0200] (i)針對體與體之間存在只共面情況時,公共面包含的邊暫設定為可見面(事實 上潛在可見)。之所以這樣,是因為:針對公共面包含的邊,可能位于視線最前方而可見,也 可能被包含該邊的體所"自遮擋",還可能被位于視線更前方的其它體所"互遮擋",所以可 能可見可能不可見,不失去一般性的,這里設定為可見,最終是否可見由計算后決定。該公 共面包含的邊潛在可見,所有這樣的包含于公共面的潛在可見邊的總個數(shù)記為slE。
[0201] (ii)針對體與體之間存在只共邊情況時,暫設定公共邊為可見邊(事實上潛在可 見)。之所以這樣,是因為:針對公共邊,可能位于視線最前方而可見,也可能被包含該邊的 體所"自遮擋",還可能被位于視線更前方的其它體所"互遮擋",所以可能可見可能不可見, 不失去一般性的,這里設定為可見,最終是否可見由計算后決定。該公共邊潛在可見,所有 這樣的潛在可見的公共邊的總個數(shù)記為s2E。
[0202] (iii)針對體與體之間存在只共點時,相接于該公共點的邊的可見性難以直接判 斷,本步驟不做處理。
[0203] 以上即對于三維流形(3-manifold)處相關(guān)面與邊的消隱處理。針對以上公共面、 公共面包含的邊、公共邊的消隱處理思想,在這里簡稱"消隱預處理策略"。本步驟不做處理 的情況,在后續(xù)步驟可能再進行相關(guān)處理。
[0204] (1. 1)平面片的分類和(1. 2)邊的分類的執(zhí)行為并列關(guān)系,順序不限。
[0205] 步驟2,擴展的第一類線消隱處理(即"自遮擋"的處理),包括依次執(zhí)行以下子步 驟:
[0206] (2.1)后向面剔除
[0207] 進行后向面剔除,包括找到法向量與視線方向一致的平面片,這些平面片稱后向 面,后向面設定為不可見面,不參與后續(xù)步驟3 ;找到法向量與視線方向不一致的平面片, 這些平面片稱前向面,前向面設定為可見面。之所以稱"后向面剔除",是因為找到的不可見 的后向面不再參與第二類線消隱處理。
[0208] (2.2)平面片的分類
[0209] (i)將通過"后向面剔除"找到的所有不可見面,加上"消隱預處理"中的所有不可 見面(即公共面),兩者和即為完整的不可見面簇;
[0210] (ii)在"消隱預處理"中不存在可見面,通過"后向面剔除"找到的可見面即完整 的可見面簇。
[0211] 其中,只需要完整的可見面簇用于后續(xù)操作,即只需要可見面作為判斷是否產(chǎn)生 "互遮擋"的主體(客體為潛在可見邊)。之所以這樣,是因為:不可見面一定被可見面所遮 擋,故而判斷邊是否被所有面(包括可見面、不可見面)遮擋可以簡化,等價簡化為判斷邊 是否被可見面遮擋。
[0212] (2. 3)邊的可見性判定
[0213] 邊始終包含可見邊、不可見邊兩類。
[0214] 值得注意的是,這里處理的邊只相接于2個平面片,即該邊上任何上一點的鄰域 都符合"二維流形(2-manifold)"的特征。之所以這樣,是因為:這里邊的可見性由僅相接 的2個平面片的情況決定,具體如下:
[0215] (i)相接于2個"不可見面"的邊,設定為不可見邊。
[0216] 該邊作為兩個不可見區(qū)域的過渡區(qū)域,該區(qū)域盡管沒有任何面積,但其遵守"連貫 性(Coherence)"中的"面的連貫性(FaceCoherence)"應該不可見。該邊最終不可見。
[0217] (ii)相接于1個"可見面"和1個"不可見面"的邊,暫設定為可見邊(事實上潛 在可見)。
[0218] 該邊作為可見區(qū)域和不可見區(qū)域的過渡區(qū)域,該區(qū)域無法通過"面的連貫性(Face Coherence) "來判斷可見性。該邊可能位于視線最前方而可見,可能被包含該邊的體所"自 遮擋",也可能被位于視線更前方的其它體所"互遮擋",所以可能可見可能不可見,不失去 一般性的,這里設定為可見,最終是否可見由計算后決定。該邊是潛在可見的。
[0219] (iii)相接于2個"可見面"的邊,暫設定為可見邊(事實上潛在可見)。
[0220] 該邊作為兩個可見區(qū)域的過渡區(qū)域,該區(qū)域盡管沒有任何面積,但其遵守"面的連 貫性(FaceCoherence)"應該可見。該邊可能位于視線最前方而可見,可能被位于視線更 前方的其它體所"互遮擋",所以可能可見可能不可見,不失去一般性的,這里設定為可見, 最終是否可見由計算后決定。該邊是潛在可見的。
[0221] 針對以上僅相接于2個面的邊的可見性判斷策略,簡稱"第一類消隱策略"。
[0222] (2. 4)邊的分類
[0223] 邊始終包含可見邊、不可見邊兩類。具體的,
[0224] 將以上(2. 3)得到的所有可見邊,加上"消隱預處理"得到的所有可見邊,兩者之 和才是完整的可見邊簇;由于"消隱預處理"沒有得到不可見邊,故而以上(2.3)得到的所 有不可見邊即為完整的不可見邊簇。其中,只需要完整的可見邊簇用于后續(xù)操作,即只需要 這些邊作為判斷是否產(chǎn)生"互遮擋"的客體(主體是可見面)。
[0225] 步驟3,擴展的第二類線消隱處理(即"互遮擋"的處理),包括依次執(zhí)行以下子步 驟:
[0226] (3. 1)邊的細分
[0227] 此處判斷每條潛在可見邊(即步驟(2. 4)中所得的完整可見邊簇中的每條邊)是 否被可見面遮擋。一條邊是否被一個面遮擋,可能存在三種情況:
[0228] (i) 一條邊被該面完全遮擋;
[0229] (ii) -條邊被該面完全不遮擋;
[0230] (iii) 一條邊被該面部分遮擋:即出現(xiàn)部分遮擋、部分不遮擋的情況。
[0231] 當遇到情況(i)和(ii)時,邊不需要進一步細分;只有遇到情況(iii)時,邊才 需要進一步細分。當邊需要進一步細分時,如何細分由邊如何被平面片裁切所決定。從原 則上講,每一條可見邊與每一個平面片都需要判交,而且一條邊可能被平面片裁切為若干 段。邊被平面片裁切的過程,可以進一步簡化為邊與平面片包含的邊給予求交的過程。裁 切后的最終每條邊稱"最簡邊"(這種類型實體在英文文獻中常稱"Span(跨越)")。之所 以稱"最簡",是因為這樣的邊上每一點的可見性一致。此處利用的是"邊的連貫性(Edge Coherence),'。
[0232] 邊與邊的相交操作(也稱打斷操作)在此不再贅述,因為在諸多文獻中涉及。
[0233] (3. 2)最簡邊的可見性判定
[0234] 最簡邊上每一個點的可見性都一樣。此處,采用最簡邊的中點的可見性來代表整 條最簡邊的可見性。由此,針對"在三維空間中判斷最簡邊是否被平面片遮蔽"被簡化為"在 三維空間中判斷點是否被平面片遮蔽"。針對"在三維空間中判斷點是否被平面片遮蔽",是 一個三維空間問題,還可進一步簡化為二維空間問題,具體如下:沿著視線方向所在的空間 直線,三維空間中的點在平面片所在超平面片中一定有一個投影點;此時,投影點和平面片 位于同一個超平面中(盡管嵌入于三維空間)。換言之,若將以上嵌入于三維空間中的平 面片通過剛性變換(包括平移、旋轉(zhuǎn)等)變換到X0Y平面,該同樣剛性變換后的投影點一定 也位于X0Y平面,因為剛性變換具有拓撲不變性。此時,以上問題簡化為"判斷變換后的投 影點是否位于變換后的二維多邊形內(nèi)",即點的投影結(jié)果是否位于面的投影結(jié)果。判斷投影 點是否位于二維多邊形內(nèi)之后,若否則最簡邊的中點可見(也就是最簡邊可見),是則不可 見。而"在二維空間中判斷點是否位于多邊形內(nèi)"算法成熟,包括可以采用"角度和判別法" 或"水平/垂直交叉數(shù)判別法"或"面積判別法"等現(xiàn)有技術(shù)判斷。
[0235] 以上通過"判斷最簡邊是否被平面片遮蔽"從而給定最簡邊的可見性的過程,簡稱 "第二類消隱策略"。
[0236] 具體實施時,消隱方法可采用投影來輔助。投影變換指的是將三維的物體投影 到二維的平面上。傳統(tǒng)上,投影變換分為平行投影(ParallelProjection)和透視投影 (PerspectiveProjection)。其中,平行投影(ParallelProjection)是投影方向垂直于觀 察平面的投影方式,也稱正投影;透視投影(PerspectiveProjection)是視線相交于滅點 的投影方式,若相交于一個滅點,則稱單點透視投影,也簡稱透視投影,若相交于兩個滅點, 則稱兩點透視投影。投影變換的本質(zhì),是從三維空間點轉(zhuǎn)換為二維投影點。消隱的本質(zhì), 是在以上轉(zhuǎn)換過程中將被遮蔽的線要素(或面要素)給予特別標識(如虛線表達)。投影 變換具備唯一性,即一個三維空間點經(jīng)過投影變換后存在且只存在一個二維投影點;相對 的,投影變換的逆向過程可稱為反投影變換,反投影變換不具備唯一性,即一個二維投影點 經(jīng)過反投影變換處理可能存在多個三維空間點,而比較同一個二維投影位置上多個三維空 間點的深度信息是實現(xiàn)物空間消隱的重要環(huán)節(jié),這是實現(xiàn)物空間消隱的重要環(huán)節(jié)。在本發(fā) 明實施例中,采用的投影方式為平行投影,但不是常規(guī)的正平行投影,而是采用一種自定義 的斜平行投影。之所以這樣做,是因為針對本發(fā)明中諸多實際案例采用該投影方式可觀察 相對全面(正面、上面、側(cè)面均包括部分),事實上本發(fā)明所述消隱方法可通過任意投影方 式輔助。具體的,實施例投影方式由于屬于平行投影,所以不需要規(guī)定視點位置(Viewing Position);以上投影的視線方向(ViewingDirection)可由(!.-|/+在-i/而表達。相應的, 其坐標變換公式為:
[0237] _2d_x= _3d_y+_3d_xXCos( 31X(45. 0/180. 0)) (1)
[0238] _2d_y= _3d_z+_3d_xXSin(X(45. 0/180. 0)) (2)
[0239] 其中,針對任意一個點,_3d_x,_3d_y,_3d_z分別為變換前該點在三維空間坐標中 的X值、Y值、Z值,而_2d_x,_2d_y分別為變換后該點在二維空間坐標中的橫坐標值、縱坐 標值。以上坐標變換過程也可以采用三維坐標系直觀解析,如附圖2所示,x0,yO,zO分別 是變換前三維點在X,Y,Z軸上的坐標,B點為投影變換后的點。該三維空間直角坐標系遵 守四個基本原則:(1)坐標系原點為(〇,〇,〇); (2)在三維空間中(即變換前),X軸、Y軸、 Z軸相互垂直;(3)在二維空間中(即變換后),X軸與Y軸、X軸與Z軸的夾角均為45度; (4)X:Y:Z為 1:1:1。
[0240] 以上即顧及拓撲的三維實體群線消隱的【具體實施方式】,為便于技術(shù)人員理解起 見,提供公式(3)_(25)如下,整個消隱過程滿足公式(3)_(25)。值得注意的是,針對以下所 有公式,是對以上文字形式的三大步驟的解釋,這種解釋是數(shù)學形式的,但內(nèi)容與以上三大 步驟一致。
[0241] 其中,第一個大步驟(即"顧及拓撲關(guān)系的消隱預處理")滿足公式(3)_(7)。具 體的,
[0242] colV^sum(V) (3)
[0243] colE^sum(E) (4)
[0244] colF^sum(F) (5)
[0245] slF<colF(6)
[0246] slE+s2E<colE(7)
[0247] 其中,colV指代容器中所有頂點的個數(shù)(AllVerticesinthe Collection),colE指代容器中所有邊的個數(shù)(AllEdgesintheCollection),colF指 代容器中所有平面片的個數(shù)(AllFacetsintheCollection).sum(V)指代每個體中頂 點個數(shù)的累加和(SumofVerticesinEachBody),sum(E)指代每個體中邊個數(shù)的累加 和(SumofEdgesinEachBody),sum(F)指代每個體中平面片個數(shù)的累加和(Sumof FacetsinEachBody).slF指代存在共享面情況時共享面的個數(shù)(SharedFacetsin SpeclthatSolidsareAdjacentbyFacets),slE指代存在共享面情況時共享面包含的 邊個數(shù)(EdgesinSharedFacetsinSpeclthatSolidsareAdjacentbyFacets),s2E 指代存在共享邊情況時共享邊的個數(shù)(SharedEdgesinSpec2thatSolidsareadjacent byEdges).
[0248] 其中,公式(3)闡述了判定是否存在共享點的過程。其中,若colV=V,則體與體 之間一定是都相離關(guān)系;若colV<V,則體與體之間或存在點相鄰、或存在邊相鄰、或存在 面相鄰。
[0249] 公式⑷闡述了判定是否存在共享邊的過程。其中,若colE=E,則體與體之間或 都相離、或存在點相鄰;若colE<E,則體與體之間或存在邊相鄰、或存在面相鄰。
[0250] 公式(5)闡述了判定是否存在共享面的過程。其中,若colF=F,則體與體之間或 都相離、或存在點相鄰、或存在邊相鄰;若colF<F,則體與體之間一定存在面相鄰關(guān)系。
[0251] 公式(6)表明共享面只是作為面集合的一部分存在。
[0252] 公式(7)表明共享面包含的邊和共享邊只是作為邊集合的一部分存在。
[0253] 第二個大步驟(即"擴展的第一類線消隱處理")滿足公式(8)_(17)。具體的,
[0254] vF=fF(8)
[0255] ivF=bF+slF(9)
[0256] slE+s2E<tlvE(10)
【權(quán)利要求】
1. 一種顧及拓撲的三維地理空間實體群的線消隱方法,其特征在于:所述三維地理空 間實體群的三維空間數(shù)據(jù)模型包括節(jié)點、邊、環(huán)、平面片和體這5類基元,其中,點是0維基 元,邊與環(huán)是1維基元,平面片是2維基元,體是3維基元; 預設的規(guī)則如下, 規(guī)則1,待消隱的每個實體必須是剖分完全的; 規(guī)則2,當某體與另一個體存在的公共元素為2維時,稱只共面; 規(guī)則3,當某體與另一個體存在的公共元素為1維時,稱只共邊; 規(guī)則4,當某體與另一個體存在的公共元素為0維時,稱只共點; 規(guī)則5,當某體與另兩個體存在的公共元素分別為2維時,稱共面面,按照只共面的情 況處理; 規(guī)則6,當某體與另兩個體存在的公共元素分別為1維與2維時,稱共邊面,按照只共面 的情況處理; 規(guī)則7,當某體與另多個體存在的公共元素分別為1維時,稱共邊邊,按照只共邊的情 況處理; 規(guī)則8,當某體與另兩個體存在的公共元素分別為0維與2維時,稱共點面,按照只共面 的情況處理; 規(guī)則9,當某體與另兩個體存在的公共元素分別為0維與1維時,稱共點邊,按照只共邊 的情況處理; 規(guī)則10,當某體與另多個體存在的公共元素分別為〇維時,稱共點點,按照只共點的情 況處理; 基于以上預設規(guī)則,進行消隱過程,包括以下步驟, 步驟1,顧及拓撲關(guān)系的消隱預處理,包括進行平面片的分類和邊的分類, 進行平面片的分類如下, (i) 針對體與體之間存在只共面情況時,設定公共面為不可見面; (ii) 針對體與體之間存在只共邊情況時,本步驟不做處理; (iii) 針對體與體之間存在只共點情況時,本步驟不做處理; 進行邊的分類如下, (i) 針對體與體之間存在只共面情況時,公共面包含的邊暫設定為可見面; (ii) 針對體與體之間存在只共邊情況時,暫設定公共邊為可見邊; (iii) 針對體與體之間存在只共點情況時,本步驟不做處理; 步驟2,擴展的第一類線消隱處理,包括子步驟如下, 步驟2. 1,進行后向面剔除,包括找到法向量與視線方向一致的平面片,這些平面片稱 后向面,后向面設定為不可見面,不參與后續(xù)步驟3 ;找到法向量與視線方向不一致的平面 片,這些平面片稱前向面,前向面設定為可見面; 步驟2. 2,進行平面片的分類如下, (i) 將通過后向面剔除找到的所有不可見面,加上步驟1所得所有不可見面,取和得到 完整的不可見面族; (ii) 根據(jù)通過后向面剔除找到的可見面得到完整的可見面簇; 步驟2. 3,針對僅相接于2個面的邊,進行邊的可見性判定如下, (i) 相接于2個不可見面的邊,設定為不可見邊; (ii) 相接于1個可見面和1個不可見面的邊,暫設定為可見邊; (iii) 相接于2個可見面的邊,暫設定為可見邊; 步驟2. 4,進行邊的分類,包括將步驟2. 3得到的所有可見邊,加上步驟1得到的所有 可見邊,取和得到完整的可見邊簇,步驟2. 3得到的所有不可見邊為完整的不可見邊簇; 步驟3,擴展的第二類線消隱處理,包括子步驟如下, 步驟3. 1,邊的細分,包括以步驟2. 4所得完整可見邊簇中的每條邊為潛在可見邊,判 斷潛在可見邊是否被可見面遮擋,當被可見面部分遮擋時,對此邊根據(jù)與平面片的相交情 況進進行裁切,裁切后的最終每條邊稱為最簡邊; 步驟3. 2,最簡邊的可見性判定,包括采用最簡邊的中點的可見性來代表整條最簡邊的 可見性。
2. 如權(quán)利要求1所述顧及拓撲的三維地理空間實體群的線消隱方法,其特征在于:步 驟3. 2,中判斷最簡邊的中點的可見性如下, 最簡邊的中點為三維空間中的點,沿著視線方向所在的空間直線,三維空間中的點在 平面片所在超平面片中一定有一個投影點;此時,投影點和平面片位于同一個超平面中,通 過判斷投影點是否位于二維多邊形內(nèi),得到最簡邊的中點的可見性。
3. 如權(quán)利要求1或2所述顧及拓撲的三維地理空間實體群的線消隱方法,其特征在于:根據(jù)消隱過程所得結(jié)果,最終可視化效果中可見線的樣式和不可見線的樣式都采用自定義 設置。
【文檔編號】G06T17/05GK104392489SQ201410583209
【公開日】2015年3月4日 申請日期:2014年10月27日 優(yōu)先權(quán)日:2014年10月27日
【發(fā)明者】虞昌彬, 李霖, 趙志剛, 賀彪 申請人:武漢大學