技術(shù)領(lǐng)域
下面的描述涉及一種用于基于流體粒子建??諝馀莸倪\(yùn)動(dòng)的方法和設(shè)備。
背景技術(shù):
在計(jì)算機(jī)圖形(CG)領(lǐng)域中(例如,視覺(jué)效果(VFX)領(lǐng)域),空氣粒子可用于建模流體流動(dòng)中的空氣泡。
為了使用空氣粒子建模流體中的空氣泡,與空氣泡的體積對(duì)應(yīng)的空間需要使用空氣粒子填充。因此,大量的空氣粒子需要被處理以建模大型的空氣泡,并且確定空氣粒子的最初播種位置和消除位置可能不容易。
技術(shù)實(shí)現(xiàn)要素:
提供本發(fā)明內(nèi)容從而以簡(jiǎn)化的形式介紹將在下面的具體實(shí)施方式中進(jìn)一步描述的構(gòu)思的選擇。本發(fā)明內(nèi)容不意在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不意在作為確定要求保護(hù)的主題的范圍的幫助而被使用。
在一個(gè)總體方面中,一種流體粒子建模方法,包括:基于流體粒子的位置確定氣泡單元;定義由氣泡單元構(gòu)成的氣泡;基于氣泡的體積的改變計(jì)算氣泡的壓力;基于氣泡的壓力更新流體粒子的位置。
確定氣泡單元的步驟可包括:將基于網(wǎng)格單元的模型空間中的網(wǎng)格單元之中的不包括任何流體粒子的網(wǎng)格單元確定為氣泡單元。
定義氣泡的步驟可包括:基于氣泡單元之間的連接關(guān)系確定氣泡;將標(biāo)識(shí)符(ID)分配給氣泡。
確定氣泡的步驟可包括:使用泛洪填充標(biāo)記算法確定氣泡單元之間的連接關(guān)系;將氣泡單元之中的連接的氣泡單元確定為氣泡。
流體粒子建模方法還可包括:基于與氣泡的位置相鄰的流體單元的信息,確定氣泡的最初的體積和最初的壓力;流體單元可包括所述流體粒子中的一些流體粒子。
計(jì)算氣泡的壓力的步驟可包括:基于氣泡的先前的體積和氣泡的當(dāng)前的體積計(jì)算氣泡的壓力。
計(jì)算氣泡的壓力的步驟可包括:使用氣體狀態(tài)方程計(jì)算有效防止氣泡消失的氣泡的壓力。
流體粒子建模方法還可包括:通過(guò)在不同的建模時(shí)間步長(zhǎng)中執(zhí)行ID匹配,確定氣泡的結(jié)構(gòu)改變是否已發(fā)生;響應(yīng)于確定的結(jié)果是結(jié)構(gòu)改變已發(fā)生,將新的ID分配給由于結(jié)構(gòu)改變而造成的一個(gè)或多個(gè)氣泡。
確定氣泡的結(jié)構(gòu)改變是否已發(fā)生的步驟可包括:使用最佳重疊算法在不同的建模時(shí)間步長(zhǎng)中執(zhí)行ID匹配。
氣泡的結(jié)構(gòu)改變可以是氣泡破裂為多個(gè)氣泡和氣泡與另一氣泡合并之中的任意一個(gè)。
更新流體粒子的位置的步驟可包括:使用光滑粒子流體動(dòng)力學(xué)(SPH)算法建模流體粒子。
更新流體粒子的位置的步驟可包括:將作為外力的氣泡的壓力施加到流體粒子之中的與氣泡相鄰的流體粒子;基于施加到與氣泡相鄰的流體粒子的外力,確定流體粒子的更新的位置。
計(jì)算氣泡的壓力的步驟可包括:重新布置氣泡中的壓力分布以建模氣泡的浮力。
重新布置氣泡中的壓力分布的步驟可包括:基于構(gòu)成氣泡的氣泡單元的位置,逐步改變氣泡中的壓力分布。
重新布置氣泡中的壓力分布的步驟可包括:增加構(gòu)成氣泡的氣泡單元之中的在氣泡中處于較高位置的氣泡單元的壓力;減少構(gòu)成氣泡的氣泡單元之中的在氣泡中處于較低位置的氣泡單元的壓力。
在另一總體方面中,一種非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)當(dāng)由處理器執(zhí)行時(shí)導(dǎo)致處理器執(zhí)行如權(quán)利要求1所述的方法的指令。
在另一總體方面中,一種流體粒子建模設(shè)備,包括:處理器,被配置為基于流體粒子的位置確定氣泡單元,定義由氣泡單元構(gòu)成的氣泡,基于氣泡的體積的改變計(jì)算氣泡的壓力,基于氣泡的壓力更新流體粒子的位置;存儲(chǔ)器,被配置為存儲(chǔ)在基于網(wǎng)格單元的模型空間中包括流體粒子的流體單元的信息和構(gòu)成氣泡的氣泡單元的信息。
處理器還可被配置為:將基于網(wǎng)格單元的模型空間中的網(wǎng)格單元之中的不包括任何流體粒子的網(wǎng)格單元確定為氣泡單元。
處理器還可被配置為:基于氣泡單元之間的連接關(guān)系確定氣泡,并將標(biāo)識(shí)符(ID)分配給氣泡。
處理器還可被配置為:基于與氣泡的位置相鄰的流體單元的信息,確定氣泡的最初的體積和氣泡的最初的壓力;流體單元可包括所述流體粒子中的一些流體粒子。
處理器還可被配置為:基于氣泡的先前的體積和氣泡的當(dāng)前的體積計(jì)算氣泡的壓力。
處理器還可被配置為:使用氣體狀態(tài)方程計(jì)算有效防止氣泡消失的氣泡的壓力。
處理器還可被配置為:通過(guò)在不同的建模時(shí)間步長(zhǎng)中執(zhí)行ID匹配,確定氣泡的結(jié)構(gòu)改變是否已發(fā)生,響應(yīng)于確定的結(jié)果是結(jié)構(gòu)改變已發(fā)生,將新的ID分配給由于結(jié)構(gòu)改變而造成的一個(gè)或多個(gè)氣泡。
氣泡的結(jié)構(gòu)改變可以是氣泡破裂為多個(gè)氣泡和氣泡與另一氣泡合并之中的任意一個(gè)。
處理器還可被配置為:通過(guò)使用光滑粒子流體動(dòng)力學(xué)(SPH)算法建模流體粒子來(lái)更新流體粒子的位置。
處理器還可被配置為:將作為外力的氣泡的壓力施加到與流體粒子之中的氣泡相鄰的流體粒子,并基于施加到與氣泡相鄰的流體粒子的外力,確定流體粒子的更新的位置。
處理器還可被配置為:重新布置氣泡中的壓力分布以建模氣泡的浮力。
處理器還可被配置為:基于構(gòu)成氣泡的氣泡單元的位置,逐步改變氣泡中的壓力分布。
處理器還可被配置為:增加構(gòu)成氣泡的氣泡單元之中的在氣泡中處于較高位置的氣泡單元的壓力,減少構(gòu)成氣泡的氣泡單元之中的在氣泡中處于較低位置的氣泡單元的壓力。
在另一總體方面中,一種流體建模方法,包括:使用粒子建模方法通過(guò)流體粒子建模流體;使用非粒子建模方法在流體中建模氣泡;在建模處理中隨時(shí)間流逝追蹤氣泡的體積;基于氣泡的當(dāng)前的體積計(jì)算氣泡的當(dāng)前的壓力;將氣泡的當(dāng)前的壓力施加到流體粒子之中的與氣泡相鄰的流體粒子。
粒子建模方法可包括:在基于網(wǎng)格單元的模型空間中建模網(wǎng)格單元中的流體粒子;非粒子建模方法可包括:通過(guò)基于網(wǎng)格單元的模型空間中的不包括任何流體粒子的連續(xù)的網(wǎng)格單元來(lái)建模氣泡。
所述追蹤氣泡的步驟可包括:在建模處理的開(kāi)始將氣泡定義為基于網(wǎng)格單元的模型空間中的不包括任何流體粒子的連續(xù)的網(wǎng)格單元;在建模處理的開(kāi)始將相同的標(biāo)識(shí)符(ID)分配給連續(xù)的網(wǎng)格單元;將建模處理開(kāi)始的氣泡的體積確定為具有所述ID的連續(xù)網(wǎng)格單元的體積之和;在建模處理中在時(shí)間已流逝之后識(shí)別具有所述ID的識(shí)別的連續(xù)的網(wǎng)格單元;將時(shí)間已流逝之后的氣泡的體積確定為具有所述ID的識(shí)別的連續(xù)的網(wǎng)格單元的體積之和。
所述方法還可包括:在建模處理的開(kāi)始確定氣泡的最初的體積;在建模處理的開(kāi)始確定氣泡的最初的壓力;所述計(jì)算氣泡的當(dāng)前的壓力的步驟可包括:基于氣泡的當(dāng)前的體積、氣泡的最初的體積和氣泡的最初的壓力來(lái)計(jì)算氣泡的當(dāng)前的壓力。
所述確定氣泡的最初的體積的步驟可包括:將氣泡的最初體積確定為在建模處理的開(kāi)始基于網(wǎng)格單元的模型空間中的不包括任何流體粒子的連續(xù)的網(wǎng)格單元的體積之和;所述確定氣泡的最初的壓力的步驟可包括:將氣泡的最初的壓力確定為與建模處理開(kāi)始的氣泡相鄰的流體粒子的壓力。
所述方法還可包括:將與建模處理開(kāi)始的氣泡相鄰的流體粒子的壓力確定為與建模處理開(kāi)始的氣泡相鄰的流體粒子的個(gè)體壓力的平均。
所述計(jì)算氣泡的當(dāng)前的壓力的步驟可包括:根據(jù)下面的等式計(jì)算氣泡的當(dāng)前的壓力:
在上面的等式中,P2表示氣泡的當(dāng)前的壓力,P1表示氣泡的最初的壓力,V1表示氣泡的最初的體積,V2表示氣泡的當(dāng)前的體積。
所述將氣泡的當(dāng)前的壓力施加到與氣泡相鄰的流體粒子的步驟可包括:將氣泡的當(dāng)前的壓力施加到基于網(wǎng)格單元的模型空間中的包括流體粒子的網(wǎng)格單元。
從下面的具體實(shí)施方式、附圖和權(quán)利要求,其他特征和方面將是清楚的。
附圖說(shuō)明
圖1A和圖1B是示出產(chǎn)生氣泡的示例的示圖。
圖2是示出流體粒子建模方法的示例的流程圖。
圖3是示出定義氣泡的處理的示例的流程圖。
圖4是示出定義的氣泡的示例的示圖。
圖5是示出計(jì)算氣泡的壓力的處理的示例的流程圖。
圖6是示出計(jì)算有效防止氣泡消失的氣泡的壓力的示例的示圖。
圖7是示出流體粒子建模方法的另一示例的示圖。
圖8是示出更新流體粒子的位置的處理的示例的示圖。
圖9A和圖9B是示出基于氣泡的結(jié)構(gòu)改變而分配新的標(biāo)識(shí)符(ID)的示例的示圖。
圖10是示出流體粒子建模方法的另一示例的流程圖。
圖11是示出流體粒子建模方法的另一示例的流程圖。
圖12A和圖12B是示出重新布置氣泡中的壓力分布以建模氣泡的浮力的處理的示例的示圖。
圖13是示出流體粒子建模設(shè)備的示例的示圖。
貫穿附圖和具體實(shí)施方式,相同的附圖標(biāo)號(hào)表示相同的元件。附圖可不按比例,并且為了清楚、說(shuō)明和方便,附圖中的元件的相對(duì)大小、比例和描繪可被夸大。
具體實(shí)施方式
提供下面的詳細(xì)描述以協(xié)助讀者獲得對(duì)在此描述的方法、設(shè)備和/或系統(tǒng)的全面理解。然而,在此描述的方法、設(shè)備和/或系統(tǒng)的各種變化、修改和等同物對(duì)本領(lǐng)域普通技術(shù)人員將是清楚的。在此描述的操作的順序僅是示例,操作的順序不受限于在此闡述的順序,而是除了必須按特定順序發(fā)生的操作之外可如本領(lǐng)域普通技術(shù)人員將清楚的那樣改變。此外,為了更加清楚和簡(jiǎn)潔,可省略本領(lǐng)域普通技術(shù)人員所公知的功能和結(jié)構(gòu)的描述。
在此描述的特征可以以不同的形式來(lái)實(shí)現(xiàn),并且不應(yīng)解釋為受限于在此描述的示例。相反,提供在此描述的示例以使得本公開(kāi)將是徹底和完整的,并且在此描述的示例將向本領(lǐng)域普通技術(shù)人員傳達(dá)本公開(kāi)的全部范圍。
這里可使用諸如第一、第二、A、B、(a)、(b)的術(shù)語(yǔ)來(lái)描述組件。這些術(shù)語(yǔ)不用于限定對(duì)應(yīng)組件的本質(zhì)、順序或序列,而僅用于將對(duì)應(yīng)組件與一個(gè)或多個(gè)其他組件進(jìn)行區(qū)分。例如,第一組件可替換地被稱為第二組件,第二組件可替換地被稱為第一組件。
如果說(shuō)明書(shū)聲明一個(gè)組件被“連接”、“結(jié)合”或“接合”到另一組件,則第三組件可被“連接”、“結(jié)合”或“接合”在第一組件與第二組件之間,或者第一組件可直接被“連接”、“結(jié)合”或“接合”到第二組件。如果說(shuō)明書(shū)聲明一個(gè)組件被“直接連接”或“直接接合”到另一組件,則第三組件可不被“連接”、“結(jié)合”或“接合”在第一組件與第二組件之間。諸如“在……之間”和“直接在……之間”,以及“與……相鄰”和“與……直接相鄰”的相似的描述將以本相同方式被解釋。
在此使用的術(shù)語(yǔ)僅出于描述具體示例的目的,而不是被用于限制本公開(kāi)。除非上下文另外明確地指示,否則單數(shù)形式也意在包括復(fù)數(shù)形式。如在此使用的,術(shù)語(yǔ)“包括”、“包含”和“具有”說(shuō)明存在所敘述的特征、數(shù)量、操作、元件、組件和/或它們的組合,但是不排除存在或添加一個(gè)或多個(gè)其他特征、數(shù)量、操作、元件、組件和/或它們的組合。
除非另外定義,否則這里使用的包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)的所有術(shù)語(yǔ)具有與本公開(kāi)所屬領(lǐng)域的普通技術(shù)人員通常理解的含義相同的含義。除非在這里明確定義,否則諸如在通用字典中定義的術(shù)語(yǔ)應(yīng)被解釋為具有與相關(guān)領(lǐng)域的背景中的含義一致的含義,并且將不被解釋為理想化或過(guò)于正式的含義。
下文中描述的示例可用于建模流體和包括在流體中的氣泡。示例可以在各種裝置(例如,個(gè)人計(jì)算機(jī)(PC)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話、電視(TV)、智能家電和可穿戴裝置)中實(shí)現(xiàn)。示例可用于圖像處理以建模例如智能電話、移動(dòng)裝置和智能家居系統(tǒng)中的包括氣泡的流體。例如,示例可類似地在游戲控制臺(tái)或游戲機(jī)、虛擬現(xiàn)實(shí)播放器和三維(3D)建模設(shè)備中使用。
在示例中,建模設(shè)備可被實(shí)現(xiàn)為硬件模塊。例如,建模設(shè)備可被實(shí)現(xiàn)為單處理器系統(tǒng)、多處理器系統(tǒng)、專用硬件系統(tǒng)、處理器和硬件加速器(HWA)被組合的系統(tǒng)和云計(jì)算系統(tǒng)。
圖1A和圖1B是示出產(chǎn)生氣泡的示例的示圖。在圖1A和圖1B的示例中,包括在流體(例如,圖1A的流體120和圖1B的流體140)中的小圓圈指示包括在流體中的流體粒子。
參照?qǐng)D1A,通過(guò)固體110與流體120之間的相互作用產(chǎn)生氣泡。例如,當(dāng)固體110的一部分淹沒(méi)在流體120中并且隨后被流體120的迅速移動(dòng)或流體120的高流速排出時(shí),流體120中的先前被固體110占據(jù)的空間被空氣填充,流體120的表面由于流體120的高流速而閉合。在先前被固體110占據(jù)的空間中,通過(guò)填充該空間的空氣產(chǎn)生氣泡。
參照?qǐng)D1B,通過(guò)流體140的表面之間的碰撞產(chǎn)生氣泡。例如,當(dāng)波浪在海中升起時(shí),流體140的部分可由于風(fēng)而以不同的流速和不同的高度移動(dòng)。流體140的在高位以高流速移動(dòng)的一部分(例如,浪涌部分)的表面可與流體140的在低位以低流速移動(dòng)的一部分的表面碰撞。在碰撞的時(shí)刻,空氣可能被以高流速移動(dòng)的浪涌部分捕獲。氣泡可通過(guò)被浪涌部分捕獲的空氣而產(chǎn)生。
盡管未示出,但是,例如當(dāng)通過(guò)輕微地傾斜一瓶水將水倒入杯中并且在水流出瓶子的同時(shí)瓶外的空氣流入瓶?jī)?nèi)時(shí),可以產(chǎn)生氣泡。
在上面描述的示例中,氣泡可在流體中產(chǎn)生,或從流體中消失,并且氣泡可改變尺寸。
圖2是示出流體粒子建模方法的示例的流程圖??赏ㄟ^(guò)流體粒子建模設(shè)備(在下文中,簡(jiǎn)稱為建模設(shè)備)執(zhí)行流體粒子建模方法。參照?qǐng)D2,在操作210中,建模設(shè)備基于流體粒子的位置確定氣泡單元。流體粒子可為包括在通過(guò)基于粒子的光滑粒子流體力學(xué)(SPH)算法建模的流體中的粒子??蛇x地,流體粒子可通過(guò)基于體素的流體隱式粒子(FLIP)算法被建模。
在基于網(wǎng)格單元的模型空間中,包括流體粒子的網(wǎng)格單元被確定為流體單元。建模設(shè)備將基于網(wǎng)格單元的模型空間中的不包括流體粒子的網(wǎng)格單元確定為氣泡單元。
例如,在基于二維(2D)網(wǎng)格單元的模型空間中,在單個(gè)網(wǎng)格單元中可包括四個(gè)流體粒子。在基于3D網(wǎng)格單元的模型空間中,在單個(gè)網(wǎng)格單元中可包括八個(gè)流體粒子。然而,這些僅是示例,在單個(gè)網(wǎng)格單元中可包括更多或更少的粒子。
在操作220中,建模設(shè)備基于氣泡單元定義氣泡。建模設(shè)備基于氣泡單元之間的連接關(guān)系確定氣泡,并將標(biāo)識(shí)符(ID)分配給氣泡。將參照?qǐng)D3和圖4描述通過(guò)建模設(shè)備定義空氣泡的詳細(xì)處理和定義的空氣泡的示例。
在操作230中,建模設(shè)備基于氣泡體積的改變計(jì)算氣泡的壓力。建模設(shè)備基于氣泡先前的體積和基于時(shí)間的流逝(例如,建模時(shí)間步長(zhǎng))的氣泡當(dāng)前的體積計(jì)算氣泡的壓力。將參照?qǐng)D5描述通過(guò)建模設(shè)備計(jì)算氣泡的壓力的詳細(xì)處理。
在操作240中,建模設(shè)備基于氣泡的壓力更新流體粒子的位置。建模設(shè)備通過(guò)將作為外力的氣泡的壓力施加到與氣泡相鄰的流體粒子來(lái)確定更新的流體粒子的位置。將參照?qǐng)D8描述通過(guò)建模設(shè)備更新流體粒子的位置的詳細(xì)處理。
圖3是示出定義氣泡的處理的示例的流程圖。參照?qǐng)D3,在操作310中,建模設(shè)備確定氣泡單元之間的連接關(guān)系。例如,建模設(shè)備可使用泛洪填充(flood-fill)標(biāo)記算法來(lái)確定氣泡單元之間的連接關(guān)系。泛洪填充標(biāo)記算法是用于確定多維排列中的分配的位置和連接的部分并執(zhí)行標(biāo)記的算法。泛洪填充標(biāo)記算法可使用三個(gè)參數(shù)(例如,開(kāi)始節(jié)點(diǎn)、目標(biāo)顏色和替換顏色)。泛洪填充標(biāo)記算法通過(guò)沿連接到開(kāi)始節(jié)點(diǎn)的所有節(jié)點(diǎn)將目標(biāo)顏色改變?yōu)樘鎿Q顏色來(lái)確定分配的位置(例如,氣泡單元)和連接的部分(例如,另一氣泡單元)??墒褂脭?shù)據(jù)結(jié)構(gòu)(例如,堆棧和隊(duì)列)存儲(chǔ)氣泡單元之間的連接關(guān)系。
在操作320中,建模設(shè)備將氣泡單元之中的連接的氣泡單元確定為單個(gè)氣泡。
在操作330中,建模設(shè)備將ID分配給氣泡。分配給氣泡的ID用于追蹤氣泡的運(yùn)動(dòng)和氣泡的體積的改變。當(dāng)結(jié)構(gòu)改變發(fā)生時(shí)(例如,當(dāng)氣泡通過(guò)流體粒子的運(yùn)動(dòng)或氣泡周圍的對(duì)象的碰撞而破裂為多個(gè)氣泡,或者氣泡與另一氣泡合并時(shí)),建模設(shè)備將新的ID分配給經(jīng)歷結(jié)構(gòu)改變的氣泡。將參照?qǐng)D9A和圖9B描述基于結(jié)構(gòu)改變將新的ID分配給氣泡的詳細(xì)處理。
圖4是示出定義的氣泡的示例的示圖。
建模設(shè)備建模流體與氣泡之間的相互作用,例如,當(dāng)氣泡在流體(例如,水)中產(chǎn)生,以及單個(gè)氣泡破裂為更小的氣泡或多個(gè)氣泡合并為單個(gè)更大的氣泡時(shí)發(fā)生的相互作用。
參照?qǐng)D4,建模設(shè)備基于SPH算法建模流體粒子以建模包括氣泡430的流體410的運(yùn)動(dòng)。
建模設(shè)備使用網(wǎng)格單元建模氣泡430,而不是使用空氣粒子填充流體410中的氣泡430的體積。
在將模型空間450劃分為包括網(wǎng)格單元的網(wǎng)格空間后,建模設(shè)備將包括流體粒子的網(wǎng)格單元確定為流體單元(例如,流體單元415),并將不包括流體粒子的網(wǎng)格單元確定為氣泡單元(例如,氣泡單元435和氣泡單元455)。氣泡單元可被分類為建模流體410外的空氣區(qū)域的氣泡單元(例如,氣泡單元455),以及建模流體410內(nèi)的空氣區(qū)域的氣泡單元(例如,氣泡單元435)。將主要基于建模包括在流體410中的空氣區(qū)域的氣泡單元(例如,氣泡單元435)描述圖4的示例。
因?yàn)橥ㄟ^(guò)SPH算法在建模流體粒子的處理中確定流體粒子的位置,所以建模設(shè)備在氣泡430的網(wǎng)格和位置中確定流體粒子的位置。
每一氣泡單元基于臨近的氣泡單元的連接關(guān)系被分類為組。連接的氣泡單元所被分類入的單個(gè)組被確定為單個(gè)氣泡(例如,氣泡430)。連接的氣泡單元的單個(gè)組中的氣泡單元在基于網(wǎng)格單元的模型空間中是連續(xù)的氣泡單元。氣泡430的體積被假定為等于氣泡單元的單個(gè)組的體積。例如,在包括長(zhǎng)方形網(wǎng)格單元的模型空間的情況下,單個(gè)氣泡的體積(例如,氣泡430的體積)近似為對(duì)應(yīng)的氣泡單元的組的長(zhǎng)方形網(wǎng)格單元的體積之和。
建模設(shè)備將ID分配給每一氣泡,并在建模時(shí)間步長(zhǎng)增加的持續(xù)時(shí)間內(nèi)維持分配的ID。氣泡由連接的氣泡單元的組構(gòu)成,并且相同組中的連接的氣泡單元具有相同的ID。在建模進(jìn)程中,當(dāng)前的建模時(shí)間步長(zhǎng)中的氣泡的ID與先前的建模時(shí)間步長(zhǎng)中的氣泡的ID匹配。
建模設(shè)備可基于將被建模的氣泡的尺寸配置網(wǎng)格單元,并確定或更新每一網(wǎng)格單元是否對(duì)應(yīng)于流體或氣體。
在一個(gè)示例中,建模設(shè)備通過(guò)使用網(wǎng)格單元建模包括在流體中的氣泡替代使用粒子(例如,空氣粒子)填充氣泡,來(lái)最小化處理粒子的計(jì)算。此外,建模設(shè)備不需要通過(guò)使用氣泡單元建模氣泡來(lái)計(jì)算空氣粒子的最初播種位置和消除位置。
圖5是示出計(jì)算氣泡壓力的處理的示例的流程圖。參照?qǐng)D5,在操作510中,建模設(shè)備基于與氣泡的位置相鄰的流體單元的信息確定氣泡的最初的體積和最初的壓力。例如,流體單元的信息可包括:包括在流體單元中的流體粒子的位置、移動(dòng)量、移動(dòng)速度、密度和體積。
在基于網(wǎng)格單元的模型空間中,可針對(duì)每一流體單元單獨(dú)地存儲(chǔ),或者在流體單元的網(wǎng)格點(diǎn)存儲(chǔ)流體單元的信息??蛇x地,可針對(duì)每一流體粒子存儲(chǔ),或者針對(duì)流體粒子的代表性的粒子存儲(chǔ)流體單元的信息。
例如,建模設(shè)備可將氣泡的最初的體積和最初的壓力確定為在與氣泡的位置相鄰的流體單元中存儲(chǔ)的體積和壓力。在基于網(wǎng)格單元的模型空間中,同一物理量可在臨近的網(wǎng)格單元之中被施加到作用的一個(gè)方向,也可基于作用與反作用原理被施加到反方向。
此外,建模設(shè)備可建模流體粒子以使得包括在流體單元中的每一流體粒子的體積或密度滿足體積保留的條件,并將包括在與氣泡的位置相鄰的流體單元中的流體粒子的體積和壓力的平均值(例如,代表性的值)確定為氣泡的最初的體積和最初的壓力。
在操作520中,建模設(shè)備使用氣體狀態(tài)方程計(jì)算有效防止氣泡消失的氣泡的壓力。建模設(shè)備基于氣泡的先前的體積(例如,最初的體積)和氣泡的當(dāng)前的體積來(lái)計(jì)算氣泡的壓力。將參照?qǐng)D6描述計(jì)算有效防止氣泡消失的氣泡的壓力的詳細(xì)處理。
圖6是示出計(jì)算有效防止氣泡消失的氣泡的壓力的示例的示圖。
氣體狀態(tài)方程表達(dá)氣體(例如,氣泡)的壓力與體積之間的相互關(guān)系,如下面的等式1所示。
PV=nRT (1)
在等式1中,P和V分別表示氣體(例如,氣泡)的壓力和體積,n表示氣體摩爾數(shù),R和T分別表示氣體的氣體常數(shù)和溫度。
假定氣泡的溫度在建模期間不改變,等式1的右邊(nRT)可被常數(shù)k替代。因此,等式1可重寫(xiě)為PV=k。當(dāng)給定k的值時(shí),氣體的壓力P可根據(jù)下面的等式2使用氣體的體積V而獲得。
P=k/V (2)
通過(guò)前面描述的操作,建模設(shè)備計(jì)算氣泡的最初的體積,并追蹤氣泡的ID以計(jì)算氣泡的體積隨時(shí)間的改變。建模設(shè)備確定氣泡的體積的改變和氣泡的壓力的改變。
單個(gè)氣泡的體積被近似為氣泡單元的對(duì)應(yīng)的組中的網(wǎng)格單元的體積之和。氣泡單元的對(duì)應(yīng)的組中的網(wǎng)格單元在基于網(wǎng)格單元的模型空間中是連續(xù)的單元。因此,當(dāng)具有相同ID的氣泡單元的體積改變時(shí),建模設(shè)備使用氣體狀態(tài)方程計(jì)算有效防止氣泡消失的氣泡的壓力。
將氣泡的壓力施加于相鄰的流體粒子防止氣泡由于流體粒子的移動(dòng)而不自然地減小尺寸或消失。當(dāng)氣泡的體積隨時(shí)間逐步減小時(shí),建模設(shè)備通過(guò)逐步增加氣泡的壓力推動(dòng)相鄰的流體粒子以防止氣泡消失。例如,建模設(shè)備將作為外力的有效防止氣泡消失的氣泡的壓力施加到與氣泡相鄰的流體粒子以防止被流體粒子包圍的氣泡消失。
在上面描述的示例中,代替使用空氣粒子建模氣泡,氣泡的空氣壓力用于執(zhí)行與空氣粒子相同的功能。因此,建模設(shè)備能夠建模氣泡,同時(shí)消除場(chǎng)景依賴性以及當(dāng)使用空氣粒子建模氣泡時(shí)出現(xiàn)的粒子計(jì)算的量增加。
圖7是示出流體粒子建模方法的另一示例的示圖。參照?qǐng)D7,在操作710中,建模設(shè)備基于流體粒子位置確定氣泡單元。
在操作720中,建模設(shè)備基于氣泡單元之間的連接關(guān)系確定氣泡。
在操作730中,建模設(shè)備將ID分配給氣泡。
在操作740中,建模設(shè)備基于氣泡的先前的體積和氣泡的當(dāng)前的體積計(jì)算氣泡的壓力。
在操作750中,建模設(shè)備通過(guò)將作為外力的氣泡的壓力施加到與氣泡相鄰的流體粒子來(lái)確定流體粒子的更新的位置。將參照?qǐng)D8描述確定流體粒子的更新的位置的詳細(xì)處理。
在操作760中,建模設(shè)備確定氣泡的結(jié)構(gòu)改變是否發(fā)生。氣泡的結(jié)構(gòu)改變包括:氣泡破裂為多個(gè)氣泡以及氣泡與另一氣泡合并。
在一個(gè)示例中,建模設(shè)備通過(guò)在不同的建模時(shí)間步長(zhǎng)中的ID匹配來(lái)確定氣泡的結(jié)構(gòu)改變是否發(fā)生。例如,建模設(shè)備使用最佳重疊算法確定與第一建模時(shí)間步長(zhǎng)中的位置對(duì)應(yīng)的氣泡的ID是否和與第二建模時(shí)間步長(zhǎng)中的位置對(duì)應(yīng)的氣泡的ID匹配。建模設(shè)備通過(guò)使用最佳重疊算法確定與ID對(duì)應(yīng)的氣泡是否滿足氣泡的原始的位置,以及通過(guò)確定氣泡是否重疊于與原始的位置對(duì)應(yīng)的氣泡,來(lái)確定氣泡的結(jié)構(gòu)改變是否發(fā)生。
最佳重疊算法的示例在下面的表1中示出。
表1
當(dāng)在操作760中確定結(jié)構(gòu)改變不發(fā)生時(shí),建模設(shè)備終止圖7中的處理。
在操作770中,當(dāng)在操作760中確定結(jié)構(gòu)改變發(fā)生時(shí),建模設(shè)備將新的ID分配給經(jīng)歷結(jié)構(gòu)改變的氣泡。將參照?qǐng)D9A和圖9B描述將新的ID分配給結(jié)構(gòu)改變所發(fā)生的氣泡的詳細(xì)處理。隨后,建模設(shè)備追蹤新的ID所分配的氣泡,并在操作740中基于氣泡的先前的體積和當(dāng)前的體積計(jì)算氣泡的壓力。
圖8是示出更新流體粒子的位置的處理的示例的示圖。在圖8的示例中,基于網(wǎng)格單元的模型空間中的流體單元和氣泡單元的的網(wǎng)格點(diǎn)被示出。
參照?qǐng)D8,網(wǎng)格點(diǎn)810包括與網(wǎng)格點(diǎn)810相鄰的氣泡單元(例如,氣泡單元825)的信息,網(wǎng)格點(diǎn)830包括與網(wǎng)格點(diǎn)830相鄰的流體單元(例如,流體單元845)的信息。網(wǎng)格點(diǎn)850包括氣泡單元(例如,氣泡單元825)的信息和流體單元(例如,流體單元845)的信息。
流體單元的信息可包括:包括在流體單元中的流體粒子的位置、移動(dòng)量、移動(dòng)速度、密度和體積。
在基于網(wǎng)格單元的模型空間中,流體單元的信息可以以網(wǎng)格單元的網(wǎng)格點(diǎn)的代表值或平均值的形式被存儲(chǔ)、針對(duì)每一流體粒子被存儲(chǔ)或針對(duì)流體粒子之中的代表性粒子被存儲(chǔ)。
建模設(shè)備將與氣泡820的位置相鄰的流體單元的體積和壓力確定為氣泡820的最初的體積V1和最初的壓力P1。在基于網(wǎng)格單元的模型空間中,同一物理量在臨近的網(wǎng)格單元之間以相反的方向作用,因此可在臨近的網(wǎng)格單元之間獲得平衡。
建模設(shè)備基于氣泡820的先前的體積V1和氣泡820的當(dāng)前的體積V2來(lái)計(jì)算氣泡820的改變的壓力P2。因?yàn)槿缟厦骊P(guān)于等式1所描述的,PV=k(其中,k是等于nRT的常數(shù)),所以P1V1=P2V2,因此P2可根據(jù)下面的等式3被計(jì)算。
建模設(shè)備將氣泡820的計(jì)算的壓力P2作為新的外力施加到與氣泡820相鄰的流體粒子。建模設(shè)備基于作用在與氣泡820相鄰的流體粒子上的新的外力P2使用SPH算法更新流體粒子的位置。
當(dāng)流體粒子響應(yīng)于新的外力P2而移動(dòng)時(shí),預(yù)計(jì)將被流體粒子接收的力可使用例如已知流體粒子的最初的位置和更新的位置,以及流體粒子的移動(dòng)速度的一般的物理方程而被計(jì)算。
圖9A和圖9B是示出基于氣泡的結(jié)構(gòu)改變而分配新的ID的示例的示圖。由于流體的移動(dòng)或流體與對(duì)象的碰撞,包括在流體中的的氣泡可破裂為多個(gè)小氣泡或多個(gè)氣泡可合并為單個(gè)氣泡。
圖9A示出單個(gè)氣泡910破裂為兩個(gè)氣泡920和930的示例。參照?qǐng)D9A,具有ID B的氣泡910破裂為氣泡920和氣泡930。在圖9A的示例中,建模設(shè)備將ID C分配給氣泡920并將ID D分配給氣泡930。
可選地,建模設(shè)備可基于氣泡910的ID B分配新的ID以指示氣泡920和氣泡930已從氣泡910分離。例如,建模設(shè)備可將ID B-1分配給氣泡920并將ID B-2分配給氣泡930。
圖9B示出兩個(gè)氣泡910和940合并為單個(gè)新的氣泡950的示例。參照?qǐng)D9B,具有ID B的氣泡910和具有ID E的氣泡940合并為氣泡950。在圖9B的示例中,建模設(shè)備將新的ID F分配給氣泡950。
當(dāng)由于一個(gè)氣泡或多個(gè)氣泡的合并或破裂而發(fā)生結(jié)構(gòu)改變時(shí),經(jīng)歷結(jié)構(gòu)改變的氣泡的體積同樣改變,因此在結(jié)構(gòu)改變之前連續(xù)追蹤原始的一個(gè)氣泡或多個(gè)氣泡的體積的改變是無(wú)意義的。據(jù)此,建模設(shè)備開(kāi)始追蹤新的ID所分配的氣泡的體積的改變。
圖10是示出流體粒子建模方法的另一示例的流程圖。參照?qǐng)D10,在操作1010中,建模設(shè)備建模流體運(yùn)動(dòng)。例如,建模設(shè)備使用基于粒子的SPH算法對(duì)流體進(jìn)行采樣以獲取多個(gè)流體粒子,并在每一建模時(shí)間步長(zhǎng)中通過(guò)對(duì)每一流體粒子隨時(shí)間的加速度和速度進(jìn)行積分來(lái)確定流體粒子的位置。
在操作1020中,建模設(shè)備確定氣泡單元,并將ID分配給由氣泡單元構(gòu)成的氣泡。因?yàn)榱黧w粒子的位置已在操作1010中被確定,所以建模設(shè)備確定流體粒子在網(wǎng)格中的位置。建模設(shè)備將不包括任何流體粒子的網(wǎng)格單元確定為氣泡單元。建模設(shè)備通過(guò)確定每一氣泡單元和與氣泡相鄰的氣泡單元之間的連接關(guān)系來(lái)定義氣泡。建模設(shè)備將ID分配給每一氣泡。當(dāng)建模時(shí)間步長(zhǎng)增加時(shí),建模設(shè)備保持分配到氣泡的ID。
在操作1030中,建模設(shè)備針對(duì)識(shí)別氣泡的每一ID追蹤體積的改變。氣泡包括具有相同的ID的連接的氣泡單元。因此,氣泡的體積約等于氣泡單元的體積之和。當(dāng)具有相同ID的氣泡單元的體積改變時(shí),建模設(shè)備基于等式(例如,PV=k)來(lái)計(jì)算有效防止氣泡單元消失的壓力。當(dāng)結(jié)構(gòu)改變(例如,氣泡的合并或破裂)發(fā)生時(shí),追蹤在結(jié)構(gòu)改變發(fā)生之前的氣泡的體積是沒(méi)有意義的。因此,建模設(shè)備針對(duì)與經(jīng)歷結(jié)構(gòu)改變的氣泡對(duì)應(yīng)的新的ID追蹤體積的改變。
在操作1040中,建模設(shè)備確定作為針對(duì)每一ID追蹤體積的改變的結(jié)果體積是否改變。當(dāng)在操作1040中建模設(shè)備確定體積沒(méi)有改變時(shí),建模設(shè)備終止圖10中的處理。
在操作1050中,當(dāng)在操作1040中建模設(shè)備確定體積改變時(shí),建模設(shè)備計(jì)算體積所改變的氣泡的壓力。建模設(shè)備基于氣泡的體積使用氣體狀態(tài)方程計(jì)算氣泡的壓力。在氣泡的溫度為常數(shù)的假定下,如從上面的等式3可見(jiàn),氣泡的壓力和體積相互成反比。
在操作1060中,建模設(shè)備基于在操作1050中計(jì)算的氣泡的壓力來(lái)更新流體粒子的位置。建模設(shè)備通過(guò)將在操作1050中計(jì)算的氣泡的壓力施加到與氣泡相鄰的流體粒子來(lái)更新流體粒子的位置。
在操作1010中,建模設(shè)備基于更新的流體粒子的位置建模流體運(yùn)動(dòng)。
圖11是示出流體粒子建模方法的另一示例的流程圖。針對(duì)圖11的操作1110至1130的描述,參考圖2的操作210至230的描述。
參照?qǐng)D11,在操作1140中,建模設(shè)備重新布置氣泡中的壓力分布以建模氣泡的浮力。建模設(shè)備基于構(gòu)成氣泡的氣泡單元的的位置逐步改變氣泡中的壓力分布。氣泡單元的位置可被解釋為在模型空間中從參考水平面到氣泡單元的高度。將參照?qǐng)D12A和圖12B詳細(xì)描述由建模設(shè)備執(zhí)行的重新布置氣泡中的壓力分布的處理。
在操作1150中,建模設(shè)備基于重新布置的氣泡中的壓力分布更新流體粒子的位置。例如,建模設(shè)備計(jì)算通過(guò)重新布置氣泡中的壓力分布而產(chǎn)生的浮力。建模設(shè)備通過(guò)將作為外力的浮力施加到與氣泡相鄰的流體粒子來(lái)更新流體粒子的位置。
圖12A和圖12B是示出重新布置氣泡中的壓力分布以建模氣泡的浮力的處理的示例的示圖。圖12A示出重新布置的氣泡中的壓力分布的示例。
參照?qǐng)D12A,建模設(shè)備使用逐步改變氣泡1210中的壓力分布的漸變(gradation)方法以建模氣泡1210的浮力。建模設(shè)備基于構(gòu)成氣泡1210的氣泡單元的位置逐步改變壓力分布。例如,如在圖12A中所示,建模設(shè)備重新布置在如在圖6中所示的所有方向上相同的壓力以建模氣泡1210的浮力。
浮力可使用下面的等式4而獲得。
浮力=(ρ)×(V)×(g) (4)
在等式4中,ρ表示流體密度,V表示體積,g表示重力加速度。
建模設(shè)備通過(guò)增加在構(gòu)成氣泡1210的氣泡單元之中的較高位置的氣泡單元1213的壓力并減小在構(gòu)成氣泡1210的氣泡單元之中的較低位置的氣泡單元1216的壓力來(lái)重新布置壓力,以使得氣泡1210中的壓力分布逐步地改變。
圖12B是示出氣泡單元的位置或高度與氣泡的壓力之間的相互關(guān)系的曲線圖。在構(gòu)成氣泡的多個(gè)氣泡單元之中處于較高位置的氣泡單元具有相對(duì)更高的壓力,在構(gòu)成氣泡的氣泡單元之中處于較低位置的氣泡單元具有相對(duì)更低的壓力。構(gòu)成氣泡的氣泡單元的壓力的平均值等于針對(duì)氣泡計(jì)算的壓力。
參照?qǐng)D12B的曲線圖,當(dāng)密度比為1000:1時(shí),相比于當(dāng)密度比為100:1的情況,基于氣泡單元的位置或高度的壓力的改變大。密度比是流體密度與氣泡密度之比。對(duì)于相同類型的氣泡,密度比隨著流體密度的增加而增加。因此,當(dāng)密度比增加時(shí),相同體積的氣泡的浮力也增加。當(dāng)作用在氣泡上的浮力增加時(shí),基于氣泡中的氣泡單元的位置的壓力改變也增加。
參照?qǐng)D12A和圖12B,基于浮力的方向確定將被施加到與氣泡(例如,氣泡1210)相鄰的流體粒子的壓力。例如,與氣泡1210的壓力和氣泡1210的浮力之和對(duì)應(yīng)的外力被施加到包括在處于較高位置的氣泡單元1213中的流體粒子,與氣泡1210的壓力和氣泡1210的浮力之差對(duì)應(yīng)的外力被施加到包括在處于較低位置的氣泡單元1216中的流體粒子。此外,與氣泡1210的壓力對(duì)應(yīng)的外力在氣泡單元1213和1216的右側(cè)和左側(cè)被施加到包括在單元中的流體粒子。
圖13是示出流體粒子建模設(shè)備的示例的示圖。
參照?qǐng)D13,流體粒子建模設(shè)備1330包括處理器1310和存儲(chǔ)器1330。處理器1310和存儲(chǔ)器1330通過(guò)總線1350相互通信。
處理器1310基于流體粒子的位置確定氣泡單元,基于氣泡單元定義氣泡,基于氣泡的體積的改變計(jì)算氣泡的壓力,并基于計(jì)算的氣泡的壓力更新流體粒子的位置。
在基于網(wǎng)格單元的模型空間中,處理器1310將不包括任何流體粒子的網(wǎng)格單元確定為氣泡單元。處理器基于氣泡單元之間的連接關(guān)系定義氣泡,并將ID分配給氣泡。處理器1310基于與氣泡的位置相鄰的流體單元的信息確定氣泡的最初體積和最初壓力。處理器1310基于氣泡的先前的體積和當(dāng)前的體積計(jì)算氣泡的壓力。處理器1310使用氣體狀態(tài)方程計(jì)算有效防止氣泡消失的壓力。
此外,處理器1310通過(guò)在不同的建模時(shí)間步長(zhǎng)中的ID匹配來(lái)確定氣泡的結(jié)構(gòu)改變是否發(fā)生,并將新的ID分配給發(fā)生結(jié)構(gòu)改變的氣泡。例如,氣泡的結(jié)構(gòu)改變可包括:氣泡破裂為多個(gè)氣泡以及氣泡與另一氣泡合并。
處理器1310使用SPH方法建模流體粒子。處理器1310通過(guò)將作為外力的氣泡壓力施加到與氣泡相鄰的流體粒子來(lái)確定更新的流體粒子的位置。
處理器1310重新布置氣泡中的壓力分布以建模氣泡的浮力。處理器1310基于構(gòu)成氣泡的氣泡單元的位置逐步改變壓力分布。處理器1310增加在構(gòu)成氣泡的氣泡單元之中處于較高位置的氣泡單元的壓力,并減小在構(gòu)成氣泡的氣泡單元之中處于較低位置的氣泡單元的壓力。
存儲(chǔ)器1330存儲(chǔ)在基于網(wǎng)格單元的模型空間中包括流體粒子的流體單元的信息以及不包括流體粒子的氣泡單元的信息。存儲(chǔ)器1330可為易失性存儲(chǔ)器或非易失性存儲(chǔ)器。
處理器1310可執(zhí)行上面參照?qǐng)D1A至圖12B描述的任何處理和方法。處理器1310可執(zhí)行程序并控制流體粒子建模設(shè)備1300。將由處理器1310執(zhí)行的程序指令可被存儲(chǔ)在存儲(chǔ)器1330中。流體粒子建模設(shè)備1300可通過(guò)輸入或輸出裝置(未示出)連接到外部裝置(例如,個(gè)人計(jì)算機(jī)(PC)和網(wǎng)絡(luò)),并與外部裝置交換數(shù)據(jù)。
例如,上面參照?qǐng)D1A至圖12B描述的任何處理或方法可以以在移動(dòng)裝置(諸如,移動(dòng)電話、智能電話、個(gè)人數(shù)字助理(PDA)、平板計(jì)算機(jī)或膝上型計(jì)算機(jī))、計(jì)算裝置(諸如,PC、平板計(jì)算機(jī)或上網(wǎng)本)和其他各種電子系統(tǒng)(諸如,電視(TV)、智能TV、虛擬現(xiàn)實(shí)(VR)提供裝置、游戲控制臺(tái)或游戲機(jī))中的硬件上操作的應(yīng)用的形式實(shí)現(xiàn),或可以以用于執(zhí)行處理或方法的芯片的形式被嵌入其中。
通過(guò)硬件組件來(lái)實(shí)現(xiàn)圖13中所示的執(zhí)行在此描述的關(guān)于圖1A至圖13的操作的流體粒子建模設(shè)備1300、處理器1310和存儲(chǔ)器1330。硬件組件的示例包括控制器、傳感器、發(fā)生器、驅(qū)動(dòng)器、存儲(chǔ)器、比較器、算術(shù)邏輯單元、加法器、減法器、乘法器、除法器、積分器以及本領(lǐng)域普通技術(shù)人員所知的任何其他電子組件。在一個(gè)示例中,通過(guò)計(jì)算硬件(例如,通過(guò)一個(gè)或多個(gè)處理器或計(jì)算機(jī))來(lái)實(shí)現(xiàn)硬件組件。通過(guò)一個(gè)或多個(gè)處理元件(諸如,邏輯門(mén)陣列、控制器和算術(shù)邏輯單元、數(shù)字信號(hào)處理器、微型計(jì)算機(jī)、可編程邏輯控制器、現(xiàn)場(chǎng)可編程門(mén)陣列、可編程邏輯陣列、微處理器或者本領(lǐng)域普通技術(shù)人員所知的能夠以限定方式響應(yīng)并執(zhí)行指令以達(dá)到預(yù)期結(jié)果的任何其他裝置或裝置的組合)來(lái)實(shí)現(xiàn)處理器或計(jì)算機(jī)。在一個(gè)示例中,處理器或計(jì)算機(jī)包括或者被連接到存儲(chǔ)由處理器或計(jì)算機(jī)執(zhí)行的指令或軟件的一個(gè)或多個(gè)存儲(chǔ)器。由處理器或計(jì)算機(jī)實(shí)現(xiàn)的硬件組件執(zhí)行指令或軟件,諸如操作系統(tǒng)(OS)和在OS上運(yùn)行的一個(gè)或多個(gè)軟件應(yīng)用,以執(zhí)行在此描述的關(guān)于圖1A至圖13的操作。硬件組件還響應(yīng)于指令或軟件的執(zhí)行而訪問(wèn)、操控、處理、創(chuàng)建和存儲(chǔ)數(shù)據(jù)。為了簡(jiǎn)化,單數(shù)術(shù)語(yǔ)“處理器”或“計(jì)算機(jī)”可被用于在此描述的示例的描述,但是,在其他示例中,多個(gè)處理器或計(jì)算機(jī)被使用,或者處理器或計(jì)算機(jī)包括多個(gè)處理元件或多種類型的處理元件,或二者兼有。在一個(gè)示例中,硬件組件包括多個(gè)處理器,在另一示例中,硬件組件包括處理器和控制器。硬件組件具有不同的處理配置中的任何一個(gè)或多個(gè),不同的處理配置的示例包括:?jiǎn)蝹€(gè)處理器、獨(dú)立處理器、并行處理器、單指令單數(shù)據(jù)(SISD)多處理、單指令多數(shù)據(jù)(SIMD)多處理、多指令單數(shù)據(jù)(MISD)多處理以及多指令多數(shù)據(jù)(MIMD)多處理。
由計(jì)算硬件(例如,由如上描述的執(zhí)行指令或軟件以執(zhí)行在此描述的操作的一個(gè)或多個(gè)處理器或計(jì)算機(jī))執(zhí)行在圖2、圖3、圖5、圖7、圖10和圖11中所示的執(zhí)行在此參照?qǐng)D1A至圖13所描述的操作的方法。
用于控制處理器或計(jì)算機(jī)實(shí)現(xiàn)硬件組件并且執(zhí)行以上描述的方法的指令或軟件被編寫(xiě)為計(jì)算機(jī)程序、代碼段、指令或者它們的任何組合,以單獨(dú)地或共同地指示或配置處理器或計(jì)算機(jī)如機(jī)器或?qū)S糜?jì)算機(jī)一樣進(jìn)行操作,以執(zhí)行由硬件組件執(zhí)行的操作和如以上描述的方法。在一個(gè)示例中,指令或軟件包括直接地由處理器或計(jì)算機(jī)執(zhí)行的機(jī)器代碼(諸如,由編譯器產(chǎn)生的機(jī)器代碼)。在另一示例中,指令或軟件包括由處理器或計(jì)算機(jī)使用解釋器執(zhí)行的高級(jí)代碼。本領(lǐng)域的普通技術(shù)編程者能基于附圖中所示的框圖和流程圖以及公開(kāi)了用于執(zhí)行由硬件組件執(zhí)行的操作和如以上描述的方法的算法的說(shuō)明書(shū)中的相應(yīng)描述,來(lái)容易地編寫(xiě)指令或軟件。
用于控制處理器或計(jì)算機(jī)以實(shí)現(xiàn)硬件組件和執(zhí)行如以上描述的方法的指令或軟件,以及任何相關(guān)的數(shù)據(jù)、數(shù)據(jù)文件和數(shù)據(jù)結(jié)構(gòu)被記錄、存儲(chǔ)或固定在一個(gè)或多個(gè)非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中或被記錄、存儲(chǔ)或固定在一個(gè)或多個(gè)非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括:只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、閃存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁帶、軟盤(pán)、磁光數(shù)據(jù)存儲(chǔ)裝置、光學(xué)數(shù)據(jù)存儲(chǔ)裝置、硬盤(pán)、固態(tài)盤(pán),以及本領(lǐng)域普通技術(shù)人員所知的任何裝置,所述任何裝置能夠以非暫時(shí)性方式存儲(chǔ)指令或軟件以及任何相關(guān)數(shù)據(jù)、數(shù)據(jù)文件和數(shù)據(jù)結(jié)構(gòu),并且將指令或軟件以及任何相關(guān)數(shù)據(jù)、數(shù)據(jù)文件和數(shù)據(jù)結(jié)構(gòu)提供給處理器或計(jì)算機(jī),從而處理器或計(jì)算機(jī)能執(zhí)行指令。在一個(gè)示例中,指令或軟件以及任何相關(guān)數(shù)據(jù)、數(shù)據(jù)文件和數(shù)據(jù)結(jié)構(gòu)被分布在聯(lián)網(wǎng)的計(jì)算機(jī)系統(tǒng)上,從而指令和軟件以及任何相關(guān)數(shù)據(jù)、數(shù)據(jù)文件和數(shù)據(jù)結(jié)構(gòu)以分布的方式被處理器或計(jì)算機(jī)存儲(chǔ)、訪問(wèn)和執(zhí)行。
雖然本公開(kāi)包括特定示例,但是,對(duì)本領(lǐng)域的普通技術(shù)人員而言將清楚的是,在不脫離權(quán)利要求及其等同物的精神和范圍的情況下,可在這些示例中在形式和細(xì)節(jié)上進(jìn)行各種改變。在此描述的示例應(yīng)被理解為僅具有描述性意義,而不是用于限制的目的。對(duì)每個(gè)示例中的特征或方面的描述應(yīng)被理解為可應(yīng)用于其他示例中的類似的特征或方面。如果以不同的順序執(zhí)行所描述的技術(shù),和/或如果所描述的系統(tǒng)、構(gòu)架、裝置或電路中的組件以不同的方式來(lái)組合,和/或由其他組件或它們的等同物來(lái)替換或補(bǔ)充,則可獲得合適的結(jié)果。因此,本公開(kāi)的范圍不是由具體實(shí)施方式來(lái)限定,而是由權(quán)利要求及其等同物來(lái)限定,并且在權(quán)利要求及其等同物的范圍內(nèi)的所有變化應(yīng)被解釋為被包括在本公開(kāi)中。