本發(fā)明涉及逆向工程技術領域,更具體地說,涉及一種三角網(wǎng)格的生成方法和系統(tǒng)。
背景技術:
長久以來,對真實物體幾何尺寸的精確測量主要依賴于游標卡尺、千分尺、角度尺等測量工具的接觸式測量,但是,這種測量方式無法測量形狀不規(guī)則的物體的尺寸,并且,對于文物古跡等要求非接觸測量的對象也存在技術瓶頸。而隨著相關學科的發(fā)展以及新技術新需求的推動,三維掃描技術應運而生,該技術能夠在不接觸被測物體的情況下,使用三維掃描系統(tǒng)掃描被測物體并生成三角網(wǎng)格模型,該三角網(wǎng)格模型可以用來描述被測物體的表面特征。目前,該技術已經(jīng)被廣泛應用于工業(yè)設計領域的輔助制造與檢驗、醫(yī)療領域的手術定位與康復、游戲娛樂領域的實景建模與仿真以及考古領域的遺址保護與復原等。
其中,三角網(wǎng)格模型的構(gòu)建過程主要包括數(shù)據(jù)采集與模型重構(gòu)兩部分。在數(shù)據(jù)采集過程中,需要使用三維掃描儀。如圖1所示,三維掃描儀3由照射光源2和雙目相機4組成,當被測物體1將照射光線反射進互成一定夾角的雙目相機4時,便得到被測物體1的一組立體圖像5。隨著三維掃描儀3位置的不斷變化,立體圖像的數(shù)量不斷增多,這些立體圖像分別記錄了被測物體1不同位置、不同角度的圖像信息。在模型重構(gòu)過程中,如圖2所示,首先,根據(jù)三角測量原理,按照獲取立體圖像5的時間先后順序,計算出每組立體圖像中記錄的被測物體1表面的空間曲線數(shù)據(jù)6,并將所有空間曲線數(shù)據(jù)統(tǒng)一到相同的坐標系中,然后,根據(jù)獲取的空間曲線數(shù)據(jù)6生成三角網(wǎng)格模型7,并根據(jù)三角網(wǎng)格模型7生成三維曲面模型8,其中,三角網(wǎng)格模型也稱為三角網(wǎng)格。
三角網(wǎng)格是描述被測物體表面特征的唯一數(shù)據(jù),并且,貫穿于模型的整個生命周期,對三角網(wǎng)格的分析與認知程度以及對數(shù)據(jù)結(jié)構(gòu)的處理與建模能力直接決定了三維掃描技術能否真實還原被測物體的外形結(jié)構(gòu)和尺寸特征。但是,現(xiàn)有的三角網(wǎng)格的生成方法計算復雜度較大。鑒于此,我們需要尋求一種三維掃描系統(tǒng)中三角網(wǎng)格的生成方法,以最低的計算量還原被測物體的外形尺寸。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種三角網(wǎng)格的生成方法和系統(tǒng),以提供一種計算量較小的三角網(wǎng)格生成方法。
為實現(xiàn)上述目的,本發(fā)明提供如下技術方案:
一種三角網(wǎng)格的生成方法,包括:
獲取被測物體的空間曲線數(shù)據(jù)列表,所述空間曲線數(shù)據(jù)列表包含若干個空間點的三維坐標值;
將相關空間點的編號設定為編號初始值,將當前空間點的三維坐標值依次設定為所述若干個空間點的三維坐標值;
獲取所述當前空間點的臨近點,并將所述當前空間點到所述臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較,以判定所述當前空間點的類型,所述當前空間點的類型包括過疏點、過密點、增長點和回掃點;
根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,以生成三角網(wǎng)格數(shù)據(jù);
其中,所述三角網(wǎng)格數(shù)據(jù)包括三角網(wǎng)格的空間點數(shù)據(jù)列表、邊數(shù)據(jù)列表和三角形數(shù)據(jù)列表,所述空間點數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有空間點的三維坐標值,所述邊數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每條線段的起始空間點在所述空間點數(shù)據(jù)列表中的編號,所述三角形數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每個三角形的線段在所述邊數(shù)據(jù)列表中的編號,所述臨近點為所述空間點數(shù)據(jù)列表中到所述當前空間點的距離最小的非相關空間點。
優(yōu)選的,判定所述當前空間點的類型,包括:
若所述當前空間點到所述臨近點的距離小于所述最小距離閾值,則所述當前空間點的類型為過密點;
若所述當前空間點到所述臨近點的距離大于所述最大距離閾值,則所述當前空間點的類型為過疏點;
若所述當前空間點到所述臨近點的距離介于所述最小距離閾值和所述最大距離閾值之間,且所述當前空間點投影在所述臨近點構(gòu)成的所有三角形之外,則所述當前空間點的類型為增長點;
若所述當前空間點到所述臨近點的距離介于所述最小距離閾值和所述最大距離閾值之間,且所述當前空間點投影在所述臨近點構(gòu)成的三角形之內(nèi),則所述當前空間點的類型為回掃點。
優(yōu)選的,根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,包括:
若所述當前空間點的類型為過密點,則將所述相關空間點的編號設置為所述編號初始值,將所述相關空間點的類型設置為類型初始值。
優(yōu)選的,根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,包括:
若所述當前空間點的類型為過疏點,則將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號;
判斷所述相關空間點的編號是否為所述編號初始值;
若是,則將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為過疏點;
若否,則連接所述當前空間點與所述相關空間點,并將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為過疏點;
其中,連接所述當前空間點與所述相關空間點的具體操作為將所述當前空間點的編號和所述相關空間點的編號保存到所述邊數(shù)據(jù)列表中。
優(yōu)選的,根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,包括:
若所述當前空間點的類型為增長點,則將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號;
判斷所述相關空間點的編號是否為所述編號初始值;
若所述相關空間點的編號為所述編號初始值,則連接所述當前空間點和所述空間點數(shù)據(jù)列表中到所述當前空間點距離最近的邊界點;
若所述相關空間點的編號不為所述編號初始值且所述相關空間點的類型為過疏點,則連接所述當前空間點和所述相關空間點,連接所述當前空間點和所述空間點數(shù)據(jù)列表中到所述當前空間點距離最近的邊界點;
若所述相關空間點的編號不為所述編號初始值且所述相關空間點類型不為過疏點,則連接所述當前空間點和所述相關空間點,連接所述當前空間點和與所述相關空間點通過邊界邊相連的邊界點,并生成三角形;
將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為增長點;
其中,所述邊界點為所述當前空間點的非相關空間點,且所述邊界點為三角網(wǎng)格中至少連接有一條邊界邊的空間點,所述邊界邊為三角網(wǎng)格中只參與構(gòu)成一個三角形或者未參與構(gòu)成三角形的線段;所述生成三角形的具體操作為將連接所述當前空間點和所述相關空間點的線段在所述邊數(shù)據(jù)列表中的編號、連接所述當前空間點和與所述相關空間點通過邊界邊相連的所述邊界點的線段在所述邊數(shù)據(jù)列表中的編號、連接所述相關空間點和所述邊界點的所述邊界邊在所述邊數(shù)據(jù)列表中的編號保存到所述三角形數(shù)據(jù)列表中。
優(yōu)選的,根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,包括:
若所述當前空間點的類型為回掃點,則將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號;
刪除所述三角形數(shù)據(jù)列表中的回掃三角形,所述回掃三角形為所述當前空間點投影到的所述臨近點構(gòu)成的三角形,分別連接所述當前空間點和參與構(gòu)成所述回掃三角形的三個空間點,并生成三個三角形;
將所述相關空間點的編號設置為所述編號初始值,將所述相關空間點的類型設置為所述類型初始值。
優(yōu)選的,將相關空間點的編號設置為編號初始值時,還包括:
將所述當前空間點的編號設置為所述編號初始值,將所述當前空間點的三維坐標值設置為坐標初始值,將所述相關空間點的類型設置為所述類型初始值;
將當前空間點的三維坐標值設定為任一所述空間點的三維坐標值,并對所述當前空間點進行處理之后,還包括:
將所述當前空間點的編號設置為所述編號初始值,將所述當前空間點的三維坐標值設置為所述坐標初始值。
一種三角網(wǎng)格的生成系統(tǒng),包括:
獲取模塊,用于獲取被測物體的空間曲線數(shù)據(jù)列表,所述空間曲線數(shù)據(jù)列表包含若干個空間點的三維坐標值;
設定模塊,用于將相關空間點的編號設定為編號初始值,將當前空間點的三維坐標值依次設定為所述若干個空間點的三維坐標值;
類型判定模塊,用于獲取所述當前空間點的臨近點,并將所述當前空間點到所述臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較,以判定所述當前空間點的類型,所述當前空間點的類型包括過疏點、過密點、增長點和回掃點;
處理模塊,用于根據(jù)所述當前空間點的類型以及相應的三角網(wǎng)格生成算法對所述當前空間點進行處理,以生成三角網(wǎng)格數(shù)據(jù);
其中,所述三角網(wǎng)格數(shù)據(jù)包括三角網(wǎng)格的空間點數(shù)據(jù)列表、邊數(shù)據(jù)列表和三角形數(shù)據(jù)列表,所述空間點數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有空間點的三維坐標值,所述邊數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每條線段的起始空間點在所述空間點數(shù)據(jù)列表中的編號,所述三角形數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每個三角形的線段在所述邊數(shù)據(jù)列表中的編號,所述臨近點為所述空間點數(shù)據(jù)列表中到所述當前空間點的距離最小的非相關空間點。
優(yōu)選的,當所述當前空間點到所述臨近點的距離小于所述最小距離閾值時,所述類型判定模塊判定所述當前空間點的類型為過密點;
當所述當前空間點到所述臨近點的距離大于所述最大距離閾值時,所述類型判定模塊判定所述當前空間點的類型為過疏點;
當所述當前空間點到所述臨近點的距離介于所述最小距離閾值和所述最大距離閾值之間,且所述當前空間點投影在所述臨近點構(gòu)成的所有三角形外時,所述類型判定模塊判定所述當前空間點的類型為增長點;
當所述當前空間點到所述臨近點的距離介于所述最小距離閾值和所述最大距離閾值之間,且所述當前空間點投影在所述臨近點構(gòu)成的三角形內(nèi)時,所述類型判定模塊判定所述當前空間點的類型為回掃點。
優(yōu)選的,所述處理模塊包括:
第一處理單元,用于在所述當前空間點的類型為過密點時,將所述相關空間點的編號設置為所述編號初始值,將所述相關空間點的類型設置為類型初始值;
第二處理單元,用于在所述當前空間點的類型為過疏點時,將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號,并判斷所述相關空間點的編號是否為所述編號初始值,若所述相關空間點的編號為所述編號初始值,則將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為過疏點;若所述相關空間點的編號不為所述編號初始值,則連接所述當前空間點與所述相關空間點,將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為過疏點;其中,連接所述當前空間點與所述相關空間點的具體操作為將所述當前空間點的編號和所述相關空間點的編號保存到所述邊數(shù)據(jù)列表中;
第三處理單元,用于在所述當前空間點的類型為增長點時,將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號,并判斷所述相關空間點的編號是否為所述編號初始值,若所述相關空間點的編號為所述編號初始值,則連接所述當前空間點和所述空間點數(shù)據(jù)列表中到所述當前空間點距離最近的邊界點,將所述相關空間點編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為增長點,其中,所述邊界點為所述當前空間點的非相關空間點,且所述邊界點為三角網(wǎng)格中至少連接有一條邊界邊的空間點,所述邊界邊為三角網(wǎng)格中只參與構(gòu)成一個三角形或者未參與構(gòu)成三角形的線段;
若所述相關空間點編號不為所述編號初始值且所述相關空間點的類型為過疏點,則連接所述當前空間點和所述相關空間點,連接所述當前空間點和所述空間點數(shù)據(jù)列表中到所述當前空間點距離最近的邊界點,將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為增長點;
若所述相關空間點的編號不為所述編號初始值且所述相關空間點類型不為過疏點,則連接所述當前空間點和所述相關空間點,連接所述當前空間點和與所述相關空間點通過邊界邊相連的邊界點,并生成三角形,將所述相關空間點的編號設置為所述當前空間點的編號,將所述相關空間點的類型設置為增長點;其中,所述生成三角形的具體操作為將連接所述當前空間點和所述相關空間點的線段在所述邊數(shù)據(jù)列表中的編號、連接所述當前空間點和與所述相關空間點通過邊界邊相連的所述邊界點的線段在所述邊數(shù)據(jù)列表中的編號、連接所述相關空間點和所述邊界點的所述邊界邊在所述邊數(shù)據(jù)列表中的編號保存到所述三角形數(shù)據(jù)列表中;
第四處理單元,用于在所述當前空間點的類型為回掃點時,將所述當前空間點的三維坐標值保存到所述空間點數(shù)據(jù)列表中,將所述當前空間點的編號設置為所述當前空間點的三維坐標值在所述空間點數(shù)據(jù)列表中的編號,刪除所述三角形數(shù)據(jù)列表中的回掃三角形,所述回掃三角形為所述當前空間點投影到的所述臨近點構(gòu)成的三角形,分別連接所述當前空間點和參與構(gòu)成所述回掃三角形的三個空間點,并生成三個三角形,將所述相關空間點的編號設置為所述編號初始值,將所述相關空間點的類型設置為所述類型初始值。
優(yōu)選的,當所述設定模塊將所述相關空間點的編號設置為所述編號初始值時,所述設定模塊還用于將所述當前空間點的編號設置為所述編號初始值,將所述當前空間點的三維坐標值設置為坐標初始值,將所述相關空間點的類型設置為所述類型初始值;
將當前空間點的三維坐標值設定為任一所述空間點的三維坐標值,并對所述當前空間點進行處理之后,所述設定模塊還用于將所述當前空間點的編號設置為所述編號初始值,將所述當前空間點的三維坐標值設置為所述坐標初始值。
與現(xiàn)有技術相比,本發(fā)明所提供的技術方案具有以下優(yōu)點:
本發(fā)明所提供的三角網(wǎng)格的生成方法和系統(tǒng),不是在獲得構(gòu)成三角網(wǎng)格的所有空間曲線數(shù)據(jù)列表并統(tǒng)一到相同的坐標系之后,再生成三角網(wǎng)格數(shù)據(jù),而是按照空間曲線數(shù)據(jù)列表的獲取順序?qū)臻g曲線數(shù)據(jù)列表逐個進行處理來實時生成三角網(wǎng)格數(shù)據(jù),其中,在對任一空間曲線數(shù)據(jù)列表進行處理的過程中,根據(jù)當前空間點與臨近點的相對位置關系將當前空間點分為過疏點、過密點、增長點以及回掃點,根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理。與傳統(tǒng)的三角網(wǎng)格生成方法相比,本發(fā)明提供的三角網(wǎng)格生成方法計算復雜性小、計算效率高、可修復性好。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為現(xiàn)有的三維掃描系統(tǒng)的數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為現(xiàn)有的三維掃描系統(tǒng)的模型重構(gòu)系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例提供的三角網(wǎng)格生成方法的流程圖;
圖4為本發(fā)明實施例提供的過密點的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例提供的過疏點的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的增長點的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的回掃點的結(jié)構(gòu)示意圖;
圖8為本發(fā)明實施例提供的過密點的處理結(jié)果示意圖;
圖9為本發(fā)明實施例提供的相關空間點編號不為0的過疏點的處理結(jié)果示意圖;
圖10為本發(fā)明實施例提供的相關空間點編號為0的增長點的處理結(jié)果示意圖;
圖11為本發(fā)明實施例提供的相關空間點編號不為0且相關空間點類型為過疏點的增長點的處理結(jié)果示意圖;
圖12為本發(fā)明實施例提供的相關空間點編號不為0且相關空間點類型不為過疏點的增長點處理結(jié)果示意圖;
圖13為本發(fā)明實施例提供的回掃點的處理結(jié)果示意圖;
圖14為本發(fā)明實施例提供的三角網(wǎng)格生成系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供了一種三角網(wǎng)格的生成方法,如圖3所示,該方法包括:
S101:獲取被測物體的空間曲線數(shù)據(jù)列表,所述空間曲線數(shù)據(jù)列表包含若干個空間點的三維坐標值;
本發(fā)明中通過三維掃描系統(tǒng)獲取被測物體的多個空間曲線數(shù)據(jù)列表,其中,空間曲線數(shù)據(jù)列表中包含若干空間點的三維坐標值,所述若干空間點的三維坐標值在空間曲線數(shù)據(jù)列表中的存儲順序按照空間曲線的連接順序依次保存。本實施例中,按照三維掃描系統(tǒng)獲取空間曲線數(shù)據(jù)列表的時間先后順序,依次獲取并處理每個空間曲線數(shù)據(jù)列表。在處理任意一個空間曲線數(shù)據(jù)列表的過程中,按照空間曲線數(shù)據(jù)列表中若干個空間點的存儲順序依次處理空間點。
S102:將相關空間點的編號設定為編號初始值,將當前空間點的三維坐標值依次設定為所述若干個空間點的三維坐標值;
在處理任一空間曲線數(shù)據(jù)列表之前,都需要進行數(shù)據(jù)的初始化,即將相關空間點的編號設置為編號初始值,當然,在一個具體實施例中,在進行數(shù)據(jù)的初始化時,還需將當前空間點的編號設置為編號初始值,將當前空間點的三維坐標值設置為坐標初始值,將相關空間點的類型設置為類型初始值。
本實施例中,以編號初始值為0,坐標初始值為(0,0,0),類型初始值為“無”為例進行說明,即在處理任一空間曲線數(shù)據(jù)列表之前,需要將當前空間點的編號設置為0,將當前空間點的三維坐標值設置為(0,0,0),將相關空間點的編號設置為0,將相關空間點的類型設置為無。
其中,在處理任一空間曲線數(shù)據(jù)列表的過程中,先按照存儲順序提取第一個空間點,將當前空間點的三維坐標值設定為第一個空間點的三維坐標值,然后對當前空間點進行類型判定等處理,處理完成后,再提取第二個空間點,將當前空間點的三維坐標值設定為第二個空間點的三維坐標值,然后對當前空間點進行類型判定等處理,處理完成后,再提取第三個空間點,以此類推。
S103:獲取當前空間點的臨近點,并將當前空間點到臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較,以判定當前空間點的類型,當前空間點的類型包括過疏點、過密點、增長點和回掃點;
在處理任一空間點的過程中,先將當前空間點的三維坐標值設定為該空間點的三維坐標值,假設該空間點的三維坐標值為(X1,Y1,Z1),則當前空間點的三維坐標值即為(X1,Y1,Z1),之后獲取當前空間點的臨近點,該臨近點為三角網(wǎng)格的空間點數(shù)據(jù)列表中到當前空間點的距離最小的非相關空間點,并將當前空間點到臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較,以判定當前空間點的類型,所述當前空間點的類型包括過疏點、過密點、增長點和回掃點。
其中,在獲取臨近點后,可根據(jù)臨近點的三維坐標值以及當前空間點的三維坐標值(X1,Y1,Z1)計算出當前空間點到臨近點的距離。最小距離閾值和最大距離閾值是根據(jù)建模精度需求預先設定的,其中,最大距離閾值大于最小距離閾值?;诖?,可根據(jù)當前空間點到臨近點的距離與最大距離閾值和最小距離閾值的比較結(jié)果對當前空間點的類型進行判定。
將當前空間點到臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較后,若當前空間點到臨近點的距離小于最小距離閾值,則當前空間點的類型為過密點;若當前空間點到臨近點的距離大于最大距離閾值,則當前空間點的類型為過疏點;若當前空間點到臨近點的距離介于最小距離閾值和最大距離閾值之間,且當前空間點投影在臨近點構(gòu)成的所有三角形之外,則當前空間點的類型為增長點;若當前空間點到臨近點的距離介于最小距離閾值和最大距離閾值之間,且當前空間點投影在臨近點構(gòu)成的三角形之內(nèi),則當前空間點的類型為回掃點。
如圖4所示,點A1為當前空間點,點B1為整個三角網(wǎng)格中或三角網(wǎng)格的空間點數(shù)據(jù)列表中距離當前空間點A1最近的非相關空間點,即點B1為當前空間點A1的臨近點。由于當前空間點A1到臨近點B1的距離小于最小距離閾值,因此,將當前空間點A1判定為過密點。
如圖5所示,點A2為當前空間點,點B2為整個三角網(wǎng)格或三角網(wǎng)格的空間點數(shù)據(jù)列表中距離當前空間點A2最近的非相關空間點,即點B2為當前空間點A2的臨近點。由于當前空間點A2到臨近點B2的距離大于最大距離閾值,因此,將當前空間點A2判定為過疏點。
如圖6所示,點A3為當前空間點,點B3為整個三角網(wǎng)格中或三角網(wǎng)格的空間點數(shù)據(jù)列表中距離當前空間點A3最近的非相關空間點,即點B3為當前空間點A3的臨近點。由于當前空間點A3到臨近點B3的距離介于最小距離閾值和最大距離閾值之間,且,當前空間點A3投影在臨近點B3已參與構(gòu)成的所有三角形的外邊,因此,將當前空間點A3判定為增長點。
如圖7所示,點A4為當前空間點,點B4為整個三角網(wǎng)格中或三角網(wǎng)格的空間點數(shù)據(jù)列表中距離當前空間點A4最近的非相關空間點,即點B4為當前空間點A4的臨近點。由于當前空間點A4到臨近點B4的距離介于最小距離閾值和最大距離閾值之間,且,當前空間點A4投影在臨近點B4已參與構(gòu)成的任一三角形內(nèi),因此,將當前空間點A4判定為回掃點。
需要說明的是,將當前空間點的三維坐標值設定為第一個空間曲線數(shù)據(jù)列表中的第一個空間點的三維坐標值時,由于三角網(wǎng)格的空間點數(shù)據(jù)列表中還未保存數(shù)據(jù),無法獲取當前空間點的臨近點,因此,直接將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為該三維坐標值在空間點數(shù)據(jù)列表中的編號。之后,在將當前空間點的三維坐標值設定為第一個空間曲線數(shù)據(jù)列表中的其他空間點的三維坐標值時,再從三角網(wǎng)格的空間點數(shù)據(jù)列表中查找當前空間點的臨近點。
此外,還需要說明的是,本實施例中的當前空間點和相關空間點為動態(tài)變量,當對某一空間點處理完成后,會將該空間點的編號和類型等信息設置為相關空間點的信息,之后再將當前空間點的三維坐標值設定為下一空間點的三維坐標值。而非相關空間點是指三角網(wǎng)格的空間點數(shù)據(jù)列表中,除相關空間點之外的空間點。
S104:根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理,以生成三角網(wǎng)格數(shù)據(jù);
其中,三角網(wǎng)格數(shù)據(jù)包括三角網(wǎng)格的空間點數(shù)據(jù)列表、邊數(shù)據(jù)列表和三角形數(shù)據(jù)列表,空間點數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有空間點的三維坐標值,邊數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每條線段的起始空間點在空間點數(shù)據(jù)列表中的編號,即邊數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有線段中任一線段的起始空間點在空間點數(shù)據(jù)列表中的編號,三角形數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每個三角形的線段在邊數(shù)據(jù)列表中的編號,即三角形數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有三角形中任一三角形的線段在邊數(shù)據(jù)列表中的編號。
具體地,根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理,包括:
若當前空間點的類型為過密點,則將相關空間點的編號設置為編號初始值,如設置為0,將相關空間點的類型設置為類型初始值,如設置為無。
若當前空間點的類型為過密點,則說明當前空間點的臨近點構(gòu)建的三角網(wǎng)格已滿足精度需求,此時,不需將當前空間點與臨近點構(gòu)建新的三角形,從而可以放棄當前空間點的三維坐標值,即放棄空間曲線數(shù)據(jù)列表中與當前空間點對應的空間點。其中,將相關空間點的編號設置為編號初始值,如設置為0,將相關空間點的類型設置為類型初始值,如設置為無,就相當于放棄了該空間點。如圖4和圖8所示,對圖4中過密點A1進行處理的結(jié)果實質(zhì)為放棄處理該空間點。
若當前空間點的類型為過疏點,則將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號;
判斷相關空間點的編號是否為編號初始值即是否為0;
若相關空間點的編號為編號初始值即為0,則將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為過疏點;
若相關空間點的編號不為編號初始值即不為0,則連接當前空間點與相關空間點,將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為過疏點;其中,連接當前空間點與相關空間點的具體操作為將當前空間點的編號和相關空間點的編號保存到邊數(shù)據(jù)列表中,即將當前空間點的三維坐標值對應的空間點與相關空間點的三維坐標值對應的空間點的連接關系保存在邊數(shù)據(jù)列表中,之后在生成三角網(wǎng)格模型時,這兩個空間點之間會通過線段連接。
圖5為相關空間點編號為編號初始值即為0的過疏點的處理結(jié)果示意圖,由于相關空間點的編號為0即相關空間點不存在,因此,不需要連接當前空間點和相關空間點,只將當前空間點保存到三角網(wǎng)格數(shù)據(jù)中即可,即將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號。之后,將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為過疏點,以便將當前空間點的三維坐標值設定為下一空間點的三維坐標值時,建立當前空間點與相關空間點的連接關系。
圖9為相關空間點編號不為編號初始值即不為0的過疏點的處理結(jié)果示意圖,圖9中點A5為被判定為過疏點的當前空間點,點B5為整個三角網(wǎng)格中距離點A5最近的非相關空間點,即點B5為點A5的臨近點,點C5為相關空間點,在該情況下,不僅要將當前空間點A5保存到三角網(wǎng)格數(shù)據(jù)中,即將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號,而且,要連接當前空間點A5和相關空間點C5,即將當前空間點A5和相關空間點C5的編號保存到邊數(shù)據(jù)列表中,圖9中虛線表示點A5和點C5的連接關系。
若當前空間點的類型為增長點,則將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號;
判斷當前空間點的相關空間點的編號是否為編號初始值即是否為0;
若相關空間點的編號為編號初始值即為0,則連接當前空間點和空間點數(shù)據(jù)列表中到當前空間點距離最近的邊界點,之后將相關空間點編號設置為當前空間點的編號,將相關空間點的類型設置為增長點;
若相關空間點編號不為編號初始值即不為0且相關空間點的類型為過疏點,則連接當前空間點和相關空間點,連接當前空間點和空間點數(shù)據(jù)列表中到當前空間點距離最近的邊界點,之后將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為增長點;
若相關空間點的編號不為編號初始值即不為0且相關空間點的類型不為過疏點,則連接當前空間點和相關空間點,連接當前空間點和與相關空間點通過邊界邊相連的邊界點,并生成三角形,之后將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為增長點;
其中,邊界點為當前空間點的非相關空間點,且邊界點為三角網(wǎng)格中至少連接有一條邊界邊的空間點,邊界邊為三角網(wǎng)格中只參與構(gòu)成一個三角形或者未參與構(gòu)成三角形的線段;生成三角形的具體操作為將連接當前空間點和相關空間點的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點和與相關空間點通過邊界邊相連的邊界點的線段在邊數(shù)據(jù)列表中的編號、連接相關空間點和邊界點的邊界邊在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中。
圖10為相關空間點編號為編號初始值即為0的增長點的處理結(jié)果示意圖,圖10中點A6為被判定為增長點的當前空間點,點D6為三角網(wǎng)格的空間點數(shù)據(jù)列表中到點A6距離最近的邊界點,在該情況下,保存當前空間點A6,即將當前空間點A6的三維坐標值保存到空間點數(shù)據(jù)列表中,并連接當前空間點A6和邊界點D6,即將當前空間點A6和邊界點D6的編號保存到邊數(shù)據(jù)列表中,圖10中虛線表示點A6和點D6的連接關系。
圖11為相關空間點編號不為編號初始值即不為0且相關空間點類型為過疏點的增長點處理結(jié)果示意圖,圖11中點A7為被判定為增長點的當前空間點,點C7為相關空間點,點D7為三角網(wǎng)格的空間點數(shù)據(jù)列表中到當前空間點A7距離最近的邊界點,在該情況下,保存當前空間點A7,即將當前空間點A7的三維坐標值保存到空間點數(shù)據(jù)列表中,并同時連接當前空間點A7和相關空間點C7以及當前空間點A7和邊界點D7,即將當前空間點A7和相關空間點C7的編號保存到邊數(shù)據(jù)列表中,將當前空間點A7和邊界點D7的編號保存到邊數(shù)據(jù)列表中,圖11中虛線表示當前空間點A7和相關空間點C7以及當前空間點A7和邊界點D7的連接關系。
圖12為相關空間點編號不為編號初始值即不為0且相關空間點類型不為過疏點的增長點處理結(jié)果示意圖,圖12中點A8為被判定為增長點的當前空間點,點C8為相關空間點,點E8為與相關空間點C8通過邊界邊相連的邊界點,在該情況下,保存當前空間點A8,即將當前空間點A8的三維坐標值保存到空間點數(shù)據(jù)列表中,并同時連接當前空間點A8和相關空間點C8以及當前空間點A8和邊界點E8,即將當前空間點A8和相關空間點C8的編號保存到邊數(shù)據(jù)列表中,將當前空間點A8和邊界點E8的編號保存到邊數(shù)據(jù)列表中,然后將連接當前空間點A8和相關空間點C8的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點A8和邊界點E8的線段在邊數(shù)據(jù)列表中的編號、連接相關空間點C8和邊界點E8的邊界邊在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中,生成△A8C8E8。圖12中虛線表示當前空間點A8和相關空間點C8以及當前空間點A8和邊界點E8的連接關系,點A8、點C8和點E8構(gòu)成一個空間三角形。
若當前空間點的類型為回掃點,此時,三角形數(shù)據(jù)列表中的回掃三角形即為當前空間點投影到的臨近點構(gòu)成的三角形,將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號,刪除三角形數(shù)據(jù)列表中的回掃三角形,分別連接當前空間點和參與構(gòu)成回掃三角形的三個空間點,并生成三個三角形,將相關空間點的編號設置為編號初始值即為0,將相關空間點的類型設置為類型初始值即設置為無。
圖13為回掃點的處理結(jié)果示意圖,圖13中點A9為被判定為回掃點的當前空間點,回掃三角形為△F9G9H9,在該情況下,刪除三角網(wǎng)格的三角形數(shù)據(jù)列表中保存的△F9G9H9的信息即連接關系,保存當前空間點A9,即將當前空間點A9的三維坐標值保存到空間點數(shù)據(jù)列表中,連接當前空間點A9和構(gòu)成回掃三角形的第一個空間點F9,連接當前空間點A9和構(gòu)成回掃三角形的第二個空間點G9,連接當前空間點A9和構(gòu)成回掃三角形的第三個空間點H9,即將當前空間點A9和第一個空間點F9的編號保存到邊數(shù)據(jù)列表中,將當前空間點A9和第二個空間點G9的編號保存到邊數(shù)據(jù)列表中,將當前空間點A9和第三個空間點H9的編號保存到邊數(shù)據(jù)列表中,生成△A9F9G9、△A9F9H9和△A9G9H9這三個空間三角形,并保存到三角網(wǎng)格的三角形數(shù)據(jù)列表中,即將連接當前空間點A9和第一個空間點F9的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點A9和第二個空間點G9的線段在邊數(shù)據(jù)列表中的編號、連接第一個空間點F9和第二個空間點G9的線段在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中,將連接當前空間點A9和第一個空間點F9的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點A9和第三個空間點H9的線段在邊數(shù)據(jù)列表中的編號、連接第一個空間點F9和第三個空間點H9的線段在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中,將連接當前空間點A9和第二個空間點G9的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點A9和第三個空間點H9的線段在邊數(shù)據(jù)列表中的編號、連接第二個空間點G9和第三個空間點H9的線段在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中。
對該空間點處理完成后,將當前空間點編號設置為編號初始值即設置為0,將當前空間點坐標值設置為坐標初始值即設置為(0,0,0),按照存儲順序提取下一個空間點,并重復S103至S104的步驟,直到該空間曲線數(shù)據(jù)列表中沒有空間點為止。
之后,按照三維掃描系統(tǒng)獲取空間曲線數(shù)據(jù)列表的時間先后順序,提取下一個空間曲線數(shù)據(jù)列表,并重復步驟S102至S104。直到所有的空間曲線數(shù)據(jù)列表都處理完成后,三角網(wǎng)格數(shù)據(jù)也就生成完成,即可根據(jù)三角網(wǎng)格數(shù)據(jù)生成三角網(wǎng)格,之后根據(jù)三角網(wǎng)格模型生成三維曲面模型即可獲得被測物體的幾何尺寸等表面特征。
下面以空間曲線數(shù)據(jù)列表中的若干個空間點的三維坐標值為(X1,Y1,Z1)、(X2,Y2,Z2)…..(Xn,Yn,Zn)為例,對三角網(wǎng)格的生成方法進行說明,其中,n為大于2的整數(shù)。
先進行數(shù)據(jù)初始化,即將當前空間點的編號設置為0,當前空間點坐標值設置為(0,0,0),將相關空間點的編號設置為0,相關空間點的類型設置為無。然后將當前空間點的三維坐標值設定為空間點(X1,Y1,Z1)的三維坐標值,此時,當前空間點的三維坐標值為(X1,Y1,Z1)。
從三角網(wǎng)格的空間點數(shù)據(jù)列表中獲取當前空間點的臨近點,假設臨近點的三維坐標為(x1,y1,z1),根據(jù)坐標值(X1,Y1,Z1)和(x1,y1,z1)計算出當前空間點到臨近點的距離為S,并將計算出的距離S與預設的最小距離閾值D1和最大距離閾值D2進行比較,若S<D1,則當前空間點的類型為過密點;若S>D2,則當前空間點的類型為過疏點;若D1<S<D2,則根據(jù)已生成的三角網(wǎng)格判斷當前空間點在三角網(wǎng)格中的投影即當前空間點在三角網(wǎng)格中的位置是否在臨近點構(gòu)成的所有三角形之外,如果是,則當前空間點的類型為增長點,如果否,則當前空間點的類型為回掃點。
若當前空間點的類型為過密點,則將相關空間點的編號設置為0,將相關空間點的類型設置為無。
若當前空間點的類型為過疏點,則將當前空間點的三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中,假設該三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中的編號為10,則將當前空間點的編號設置為10,之后判斷相關空間點的編號是否為0,若為0,則將相關空間點的編號設置為10,將相關空間點的類型設置為過疏點,若不為0,假設相關空間點的編號為9,則連接當前空間點與相關空間點,即將當前空間點的編號10和相關空間點的編號9保存到邊數(shù)據(jù)列表中,之后將相關空間點的編號設置為10,將相關空間點的類型設置為過疏點?;诖?,在將當前空間點的三維坐標值設定為下一空間點的三維坐標值時,相關空間點的編號為10,而不為0。
若當前空間點的類型為增長點,則將當前空間點的三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中,假設該三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中的編號為10,則將當前空間點的編號設置為10,之后判斷相關空間點的編號是否為0。
若為0,則從三角網(wǎng)格的空間點數(shù)據(jù)列表中獲取到當前空間點距離最近的邊界點,其中,邊界點為三角網(wǎng)格中至少連接有一條邊界邊的空間點,邊界邊為三角網(wǎng)格中只參與構(gòu)成一個三角形或者未參與構(gòu)成三角形的線段,然后連接當前空間點和邊界點,即將當前空間點的編號10和邊界點在空間點數(shù)據(jù)列表中的編號保存到邊數(shù)據(jù)列表中,之后將相關空間點的編號設置為10,將相關空間點的類型設置為增長點;
若不為0,且相關空間點的類型為過疏點,例如,在上一空間點的處理過程中,將相關空間點的編號設定為了9,類型設定為了過疏點,則從三角網(wǎng)格的空間點數(shù)據(jù)列表中獲取到當前空間點距離最近的邊界點,連接當前空間點和相關空間點,連接當前空間點和邊界點,即將當前空間點的編號10和相關空間點的編號9保存到邊數(shù)據(jù)列表中,將當前空間點的編號10和邊界點在空間點數(shù)據(jù)列表中的編號保存到邊數(shù)據(jù)列表中,之后將相關空間點的編號設置為10,將相關空間點的類型設置為增長點;
若不為0,且相關空間點的類型不為過疏點,例如,相關空間點的編號為9,類型為增長點,則從三角網(wǎng)格的空間點數(shù)據(jù)列表中獲取與相關空間點通過邊界邊相連的邊界點,連接當前空間點和相關空間點,連接當前空間點和與相關空間點通過邊界邊相連的邊界點,即將當前空間點的編號10和相關空間點的編號9保存到邊數(shù)據(jù)列表中,將當前空間點的編號10和與相關空間點通過邊界邊相連的邊界點在空間點數(shù)據(jù)列表中的編號保存到邊數(shù)據(jù)列表中,并將連接當前空間點和相關空間點的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點和與相關空間點通過邊界邊相連的邊界點的線段在邊數(shù)據(jù)列表中的編號、連接相關空間點和邊界點的邊界邊在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中,以生成三角形,之后將相關空間點的編號設置為10,將相關空間點的類型設置為增長點。
若當前空間點的類型為回掃點,將當前空間點的三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中,假設該三維坐標值(X1,Y1,Z1)保存到空間點數(shù)據(jù)列表中的編號為10,則將當前空間點的編號設置為10,之后刪除三角形數(shù)據(jù)列表中的回掃三角形的信息,分別連接當前空間點和參與構(gòu)成回掃三角形的三個空間點并生成三個三角形,之后將相關空間點的編號設置為0,將相關空間點的類型設置為無。
將當前空間點編號設置為0,將當前空間點坐標值設置為(0,0,0)。
之后,按照存儲順序提取下一個空間點(X2,Y2,Z2),將當前空間點的三維坐標值設定為該空間點的三維坐標值,此時,當前空間點坐標值設置為(X2,Y2,Z2),進行后續(xù)步驟,直到該空間曲線數(shù)據(jù)列表中的沒有空間點為止。然后獲取下一個空間曲線數(shù)據(jù)列表,重復上述步驟。
本發(fā)明實施例提供的三維網(wǎng)格生成方法,不是在獲得構(gòu)成三角網(wǎng)格的所有空間曲線數(shù)據(jù)列表并統(tǒng)一到相同的坐標系之后,再生成三角網(wǎng)格數(shù)據(jù),而是按照空間曲線數(shù)據(jù)列表的獲取順序?qū)臻g曲線數(shù)據(jù)列表逐個進行處理來實時生成三角網(wǎng)格數(shù)據(jù),其中,在對任一空間曲線數(shù)據(jù)列表進行處理的過程中,根據(jù)當前空間點與臨近點的相對位置關系將當前空間點分為過疏點、過密點、增長點以及回掃點,根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理。與傳統(tǒng)的三角網(wǎng)格生成方法相比,本發(fā)明提供的三角網(wǎng)格生成方法計算復雜性小、計算效率高、可修復性好。
本發(fā)明實施例還提供了一種三角網(wǎng)格的生成系統(tǒng),如圖14所示,包括獲取模塊1、設定模塊2、類型判定模塊2和處理模塊3。
其中,獲取模塊1,用于獲取被測物體的空間曲線數(shù)據(jù)列表,該空間曲線數(shù)據(jù)列表包含若干個空間點的三維坐標值;
設定模塊2,用于將相關空間點的編號設定為編號初始值,將當前空間點的三維坐標值依次設定為所述若干個空間點的三維坐標值;
類型判定模塊3,用于獲取當前空間點的臨近點,并將當前空間點到臨近點的距離與預設的最小距離閾值和最大距離閾值進行比較,以判定當前空間點的類型,當前空間點的類型包括過疏點、過密點、增長點和回掃點;
處理模塊4,用于根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理,以生成三角網(wǎng)格數(shù)據(jù);
其中,三角網(wǎng)格數(shù)據(jù)包括三角網(wǎng)格的空間點數(shù)據(jù)列表、邊數(shù)據(jù)列表和三角形數(shù)據(jù)列表,空間點數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的所有空間點的三維坐標值,邊數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每條線段的起始空間點在空間點數(shù)據(jù)列表中的編號,三角形數(shù)據(jù)列表用于保存構(gòu)成三角網(wǎng)格的每個三角形的線段在邊數(shù)據(jù)列表中的編號,臨近點為空間點數(shù)據(jù)列表中到當前空間點的距離最小的非相關空間點。
本發(fā)明中通過三維掃描系統(tǒng)獲取被測物體的多個空間曲線數(shù)據(jù)列表,多個空間曲線數(shù)據(jù)列表按照三維掃描系統(tǒng)獲取的時間先后順序存儲,獲取模塊1也按照時間先后順序依次獲取空間曲線數(shù)據(jù)列表。其中,空間曲線數(shù)據(jù)列表中包含若干空間點的三維坐標值,若干空間點的三維坐標值在空間曲線數(shù)據(jù)列表中的存儲順序按照空間曲線的連接順序依次保存。之后,設定模塊2也按照存儲順序從空間曲線數(shù)據(jù)列表中依次提取空間點,并對空間點的類型進行判定。
具體地,在當前空間點到臨近點的距離小于最小距離閾值時,類型判定模塊3判定當前空間點的類型為過密點;
在當前空間點到臨近點的距離大于最大距離閾值時,類型判定模塊3判定當前空間點的類型為過疏點;
在當前空間點到臨近點的距離介于最小距離閾值和最大距離閾值之間,且當前空間點投影在臨近點構(gòu)成的所有三角形外時,類型判定模塊3判定當前空間點的類型為增長點;
在當前空間點到臨近點的距離介于最小距離閾值和最大距離閾值之間,且當前空間點投影在臨近點構(gòu)成的三角形內(nèi)時,類型判定模塊3判定當前空間點的類型為回掃點。
并且,處理模塊4包括第一處理單元、第二處理單元、第三處理單元和第四處理單元。
其中,第一處理單元,用于在當前空間點的類型為過密點時,將相關空間點的編號設置為編號初始值,將相關空間點的類型設置為類型初始值;
第二處理單元,用于在當前空間點的類型為過疏點時,將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號,并判斷相關空間點的編號是否為編號初始值,若相關空間點的編號為編號初始值,則將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為過疏點;若相關空間點的編號不為編號初始值,則連接當前空間點與相關空間點,將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為過疏點;其中,連接當前空間點與相關空間點的具體操作為將當前空間點的編號和相關空間點的編號保存到邊數(shù)據(jù)列表中;
第三處理單元,用于在當前空間點的類型為增長點時,將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號,并判斷相關空間點的編號是否為編號初始值,若相關空間點的編號為編號初始值,則連接當前空間點和空間點數(shù)據(jù)列表中到當前空間點距離最近的邊界點,將相關空間點編號設置為當前空間點的編號,將相關空間點的類型設置為增長點,其中,邊界點為當前空間點的非相關空間點,且邊界點為三角網(wǎng)格中至少連接有一條邊界邊的空間點,邊界邊為三角網(wǎng)格中只參與構(gòu)成一個三角形或者未參與構(gòu)成三角形的線段;若相關空間點編號不為編號初始值且相關空間點的類型為過疏點,則連接當前空間點和相關空間點,連接當前空間點和空間點數(shù)據(jù)列表中到當前空間點距離最近的邊界點,將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為增長點;若相關空間點的編號不為編號初始值且相關空間點類型不為過疏點,則連接當前空間點和相關空間點,連接當前空間點和與相關空間點通過邊界邊相連的邊界點,并生成三角形,將相關空間點的編號設置為當前空間點的編號,將相關空間點的類型設置為增長點;其中,生成三角形的具體操作為將連接當前空間點和相關空間點的線段在邊數(shù)據(jù)列表中的編號、連接當前空間點和與相關空間點通過邊界邊相連的邊界點的線段在邊數(shù)據(jù)列表中的編號、連接相關空間點和邊界點的邊界邊在邊數(shù)據(jù)列表中的編號保存到三角形數(shù)據(jù)列表中;
第四處理單元,用于在當前空間點的類型為回掃點時,將當前空間點的三維坐標值保存到空間點數(shù)據(jù)列表中,將當前空間點的編號設置為當前空間點的三維坐標值在空間點數(shù)據(jù)列表中的編號,刪除三角形數(shù)據(jù)列表中的回掃三角形,回掃三角形為當前空間點投影到的臨近點構(gòu)成的三角形,分別連接當前空間點和參與構(gòu)成回掃三角形的三個空間點,并生成三個三角形,將相關空間點的編號設置為編號初始值,將相關空間點的類型設置為類型初始值。
除此之外,當設定模塊將相關空間點的編號設置為編號初始值時,設定模塊還用于將當前空間點的編號設置為編號初始值,將當前空間點的三維坐標值設置為坐標初始值,將相關空間點的類型設置為類型初始值;
將當前空間點的三維坐標值設定為任一所述空間點的三維坐標值,并對當前空間點進行處理之后,設定模塊還用于將當前空間點的編號設置為編號初始值,將當前空間點的三維坐標值設置為坐標初始值。
本發(fā)明實施例提供的三維網(wǎng)格生成系統(tǒng),不是在獲得構(gòu)成三角網(wǎng)格的所有空間曲線數(shù)據(jù)列表并統(tǒng)一到相同的坐標系之后,再生成三角網(wǎng)格數(shù)據(jù),而是按照空間曲線數(shù)據(jù)列表的獲取順序?qū)臻g曲線數(shù)據(jù)列表逐個進行處理來實時生成三角網(wǎng)格數(shù)據(jù),其中,在對任一空間曲線數(shù)據(jù)列表進行處理的過程中,根據(jù)當前空間點與臨近點的相對位置關系將當前空間點分為過疏點、過密點、增長點以及回掃點,根據(jù)當前空間點的類型以及相應的三角網(wǎng)格生成算法對當前空間點進行處理。與傳統(tǒng)的三角網(wǎng)格生成方法相比,本發(fā)明提供的三角網(wǎng)格生成方法計算復雜性小、計算效率高、可修復性好。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
對所公開的實施例的上述說明,使本領域?qū)I(yè)技術人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。