專利名稱:一種曲面求交的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種曲面求交的方法。
背景技術(shù):
在眾多計(jì)算機(jī)圖形學(xué)的應(yīng)用中,例如建模、生成有限元網(wǎng)絡(luò)、科學(xué)視覺、界面和特 征檢測(cè)等,經(jīng)常遇到曲面與曲面相交(簡(jiǎn)稱曲面相交)的問題。在邊界表示幾何建模的應(yīng) 用中,曲面求交問題顯得尤為重要。在現(xiàn)有的曲面求交方法當(dāng)中,跟蹤法是應(yīng)用得最廣泛的 方法,其原因是跟蹤法相對(duì)其他方法更易于實(shí)現(xiàn)并具有通用性。但對(duì)于使用傳統(tǒng)跟蹤法進(jìn)行曲面求交會(huì)涉及到一些問題,例如如何提高迭代的效 率,如何精確確定追蹤步長(zhǎng)和方向,如何保證曲面接近重合時(shí)的準(zhǔn)確性等問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種曲面求交方法,以便在利用追蹤法進(jìn) 行曲面求交過程中,有效地提高迭代的效率、確定追蹤步長(zhǎng)和方向的精確性以及曲面接近 重合時(shí)的準(zhǔn)確性。本發(fā)明提供的一種曲面求交方法,包括以下步驟A、將曲面分割為小的相交區(qū)域;B、確定初始點(diǎn);C、構(gòu)造曲面求交二元方程;D、解所述曲面求交二元方程;E、根據(jù)所述二元方程的根構(gòu)造交線。由上可以看出,本發(fā)明方法在利用追蹤法進(jìn)行曲面求交過程中,可以有效地提高 迭代的效率、確定追蹤步長(zhǎng)和方向的精確性以及曲面接近重合時(shí)的準(zhǔn)確性。上述曲面求交方法,其特征在于,所述步驟A包括子步驟A1、判斷曲面是否相交如果相交,則進(jìn)入步驟A2 ;否則結(jié)束本流程;A2、構(gòu)造相交區(qū)域。上述曲面求交方法,其特征在于,所述步驟A2包括以下子步驟A2. 1、分別判斷兩個(gè)曲面是否光滑,若是,則進(jìn)行下一步,否則在曲面不光滑處將 其分割為兩個(gè)子曲面片段,并以這兩個(gè)子曲面片段代替該曲面;A2. 2、判斷所述曲面或子曲面法向圓錐的角度是否都小于|、曲面或子曲面上每
條邊界的繞過角度是否都小于f、兩個(gè)曲面或子曲面法向圓錐是否不相交或者其角度是否
都小于某個(gè)指定值;當(dāng)上述判斷條件同時(shí)滿足時(shí),則執(zhí)行下一步;否則結(jié)束本流程;A2. 3、根據(jù)曲面或子曲面、曲面或子曲面是否可能有極值點(diǎn)和一個(gè)坐標(biāo)系構(gòu)造相 交區(qū)域。
由上可以看出,上述兩個(gè)曲面或子曲面法向圓錐的角度都小于某個(gè)指定值中,該 指定值是在曲面分割效率和準(zhǔn)確性間權(quán)衡的參數(shù)。如果要提高曲面分割的準(zhǔn)確性,只需要 將所述指定值調(diào)小即可;反之,則可以提高曲面分割的效率。上述曲面求交方法,其特征在于,所述步驟C包括以下子步驟Cl、定義二元公式值;C2、定義求值區(qū)間;C3、定義方程的根; C4、設(shè)計(jì)二元公式;C5、使用上述二元公式值、求值區(qū)間、方程根和二元公式組成所述二元方程。上述曲面求交方法,其特征在于,所述步驟C4包括將曲面交線定義為在區(qū)域坐標(biāo)系Z坐標(biāo)方向上距離為0的點(diǎn)的集合;設(shè)第一個(gè)曲面的方向參數(shù)為U、V,第二個(gè)曲面的方向參數(shù)為p、q, S為第一個(gè)曲面 上的任意一點(diǎn),F(xiàn)為第二個(gè)曲面上與S對(duì)應(yīng)的點(diǎn),S和F的的關(guān)系是(S-F)*Z = 0 ;設(shè)兩點(diǎn)間(S、F點(diǎn))的距離D = (S-F) *Z,則
Γ 3D (SS 5F dp dF dq、 —=---χ —--χ— ·Ζ
6u \dn dp du 3q duy
r SD fas 5F dp dV dq\ ^——=---χ —--χ— ·Ζ
dv IvSv dp dv dq dv ^
d2D f d2s d2F (dp\2 , d2F dp dq dF d2p d2F 廣 5q 丫 dF a2q) 7 -=----X —i- -2x-Χ —X —--X~--r X L--X~7 · Z
Su2 I^au2 dp2 I,Su) dpdq Su 5u 5p Su2 dq2 ^duJ dq duz ^
S2D (d2S d2F r^pV 。S2F dp dq dF d2p d2F ^SqV dF 32q)
-=----x — -2x-χ —χ —--χr--r-x ~L--χ~r ·Ζ
dv2 ^av2 dp2 [dvj 6p0q dv dv δρ dv2 dq2 {dvj dq dv2 J
S2D ( S2S S2F dp φ S2F δο dq, dF d2p d2F dq dq d2F dp dq ^F 52q )
-=-----X-lX----X-lX-----X---rX —X—---——X — X —--— x丨· Z
Su 5v IvSuSv 5p2 Su Sv dpdq du dv dp dudv dq du dv dpdq dv da d<\ dudv JI通過如下方程組解出 5u、 du
Γ (as dF dp dF dg\ v _---x —--Χ— ·Χ = 0
Kdu dp du dq du >
r fdS dF dp dF dq、Λ---x —--x— ·Υ = 0
、Sp du dq du ^J 通過如下方程組解出
OV、 OW
Γ (dS dF dp d¥ dq^] v Λ---y. —--χ— ·Χ = 0
ydv dp dv dq dv /r n f dS dF dp d¥ dq) v n---x —--x— Y =0
l5v 5p 5v 5q
S2P
q 2 > q 2 ^r ^ F 2 F12 2 V
a a ^ ^52I5P55V
, -
s 2 s 2
2 2U2U
加 5 ^ 3al
通過如下方程組解出
-X
fdPy 。d2F dp dq dF 52p 52F
丄一2x-x —x —--x~j--j
ydu J dpdq du du dp du dq
'生丫—2xi!LxH義奪-駕
5u J dpdq dn du dp du dq
(d^2 Uu.
'dq du
3F d'
d^V av2、
、2s a2s
d2p d\
通過如下方程組解出
a2F —r x(dp^‘7 d2¥ —2x-dqSF -->ZPd2¥ --xdp1[dv^dpdq5vdvdp5v2dq2l^vJa2F ——r x2 . d2F —2 x-A5qdF -->>82F --r xfdq\dp2^dvjdpdqdvdvdpdv'dq'、5vJ
-X 5qdu2 ySF _va2q、3u2dF"dqK5V2dFd2q / 1
>X = 0
Y = 0
X = 0
’ Y = 0
5u5v、 3uSv
通過如下方程組解出
d2S d2F ap 5p a2F 5p dq dF d2p d2F dq dq d2F dp dq 3F
----X —X —--X —X —--X-------X —X —--X — X —--;
d2
5p3q dv 5u 3q dudv
<X = 0
、5u5v dp 5u dv dpdq 8u dv dp dudv 3q du
“a2S 52F dp dp 52F dp 8q dF d2p d2F 8q dq d2F dp dq dF d2q ) dudv dp du dv dpdq du dv dp dudv dq du dv dpdq d/ du dq d\xd\ J
o上述曲面求交方法,其特征在于,所述步驟D包括子步驟D1、根據(jù)步驟B獲得的初始點(diǎn)及其對(duì)應(yīng)的追蹤方向,判斷能否在該初始點(diǎn)處向前 追蹤如果可以,則進(jìn)入下一步;否則轉(zhuǎn)到步驟D9 ;D2、確定當(dāng)前追蹤方向?yàn)橄蚯埃籇3、根據(jù)初始點(diǎn)和當(dāng)前追蹤方向查找與該初始點(diǎn)對(duì)應(yīng)的曲面相交區(qū)域如果找到 所述區(qū)域,則進(jìn)入下一步;否則,則轉(zhuǎn)到步驟D9 ;D4、根據(jù)初始點(diǎn)追蹤下一個(gè)點(diǎn);如果追蹤到下一個(gè)點(diǎn),則進(jìn)入下一步;否則返回步 驟D3 ;D5、將追蹤到的下一個(gè)點(diǎn)定義為當(dāng)前點(diǎn);D6、判斷當(dāng)前點(diǎn)是否為終止點(diǎn)或所述相交區(qū)域的端點(diǎn)如果是,則進(jìn)入下一步;否 則返回步驟D4;D7、判斷當(dāng)前點(diǎn)是否為初始追蹤點(diǎn)如果不是,則進(jìn)入下一步;否則進(jìn)入步驟D14 ;D8、判斷能否在初始點(diǎn)處向后追蹤如果可以,則進(jìn)入下一步;否則進(jìn)入步驟D14 ;D9、確定當(dāng)前追蹤方向?yàn)楹笙?;D10、根據(jù)當(dāng)前點(diǎn)和當(dāng)前追蹤方向查找相關(guān)區(qū)域如果找到相關(guān)區(qū)域,則進(jìn)入下一
8步;否則,則轉(zhuǎn)到步驟D14;D11、根據(jù)當(dāng)前點(diǎn)追蹤下一個(gè)點(diǎn);如果追蹤到下一個(gè)點(diǎn),則進(jìn)入下一步;否則返回 步驟DlO ;D12、將追蹤到的下一個(gè)點(diǎn)定義為當(dāng)前點(diǎn);D13、判斷當(dāng)前點(diǎn)是否為終止點(diǎn)或所述相交區(qū)域的端點(diǎn)如果是,則進(jìn)入下一步; 否則返回步驟Dll ;D14、將前后兩個(gè)追蹤方向都得到的根合并成一個(gè)根。上述曲面求交方法,其特征在于,所述步驟D5包括以下子步驟D5.1、估算追蹤步長(zhǎng);
D5. 2、計(jì)算追蹤的切線方向;D5. 3、估算下一個(gè)點(diǎn);D5. 4、計(jì)算下一個(gè)點(diǎn)的迭代范圍;D5. 5、迭代到下一個(gè)點(diǎn);D5. 6、檢查下一點(diǎn)是否合法如果不合法,則進(jìn)入下一步;否則,轉(zhuǎn)到步驟8 ;D5. 7、將追蹤步長(zhǎng)減半,重新估算下一個(gè)點(diǎn)后轉(zhuǎn)回步驟5 ;D5.8、結(jié)束。上述曲面求交方法,其特征在于,所述步驟D5. 1中對(duì)追蹤步長(zhǎng)的估算如下在當(dāng)前值Val的一階偏導(dǎo)數(shù)數(shù)Fv不為0時(shí),估算的追蹤步長(zhǎng)為
3 2
+在當(dāng)前值Val的一階偏導(dǎo)數(shù)數(shù)Fu不為0時(shí),則估算的追逐步長(zhǎng)為
12 dU dU2
+淇中,當(dāng)前值Val的參數(shù)為U、V。
12 dV dV2上述曲面求交方法,其特征在于,所述步驟D5. 2中對(duì)追蹤切線方向的計(jì)算如下設(shè)追蹤方向?yàn)閞Vt,當(dāng)前值的參數(shù)為U、V ;如果追蹤方向?yàn)橄蚯埃瑒trVt = (Fv, -Fu);否則 rVt = (-Fv,F(xiàn)u);如果rVt的長(zhǎng)度不為0,則將rVt單位化后,作為最終的追蹤切線方向;否則,設(shè)判 別式d = Fuv*FuV-Fuu*FVV,其中Fu、Fv為當(dāng)前值的一階偏導(dǎo)數(shù),F(xiàn)uv, Fuu、Fvv為當(dāng)前值 的二階偏導(dǎo)數(shù);如果判別式d為0,則將當(dāng)前點(diǎn)減去前一個(gè)點(diǎn)得到的向量單位化后,作為最終的追 蹤切線方向;如果追蹤方向?yàn)橄蚝螅瑒trVt = (-Fvv, Fuv);否則 rVt = (Fvv, -Fuv);如果rVt的長(zhǎng)度不為0,則將rVt單位化后,即為最終的追蹤切線方向;否則將當(dāng)前 點(diǎn)減去前一個(gè)點(diǎn)得到的向量單位化后,作為最終的追蹤切線方向。上述曲面求交方法,其特征在于,所述步驟D5. 4包括以下子步驟D5. 4. 1、將當(dāng)前相交區(qū)域的范圍、所有初始點(diǎn)和當(dāng)前點(diǎn)限定的范圍、所有已知根的 端點(diǎn)和當(dāng)前點(diǎn)限定的范圍以及當(dāng)前點(diǎn)自身限定的范圍的求并。D5. 4. 2、將所述求并的結(jié)果作為下一個(gè)點(diǎn)的迭代范圍。由上可以看出,當(dāng)前相交區(qū)域的范圍;所有初始點(diǎn)和當(dāng)前點(diǎn)限定的范圍,這個(gè)限定 能保證追蹤不越過任何初始點(diǎn),從而避免得到重復(fù)的根;所有已知根的端點(diǎn)和當(dāng)前點(diǎn)限定的范圍,這個(gè)限定保證追蹤得到的根不重疊;以及當(dāng)前點(diǎn)自身限定的范圍,以保證迭代不到 當(dāng)前根已經(jīng)經(jīng)過的位置。上述曲面求交方法,其特征在于,所述步驟D5. 5包括以下子步驟D5. 5. 1、定義所述迭代方程組,如下
權(quán)利要求
一種曲面求交方法,其特征在于,包括以下步驟A、將曲面分割為小的相交區(qū)域;B、確定初始點(diǎn);C、構(gòu)造曲面求交二元方程;D、解所述曲面求交二元方程;E、根據(jù)所述二元方程的根構(gòu)造交線。
2.根據(jù)權(quán)利要求1所述的曲面求交方法,其特征在于,所述步驟A包括子步驟 A1、判斷曲面是否相交如果相交,則進(jìn)入步驟A2 ;否則結(jié)束本流程;A2、構(gòu)造相交區(qū)域。
3.根據(jù)權(quán)利要求2所述的曲面求交方法,其特征在于,所述步驟A2包括以下子步驟 A2. 1、分別判斷兩個(gè)曲面是否光滑,若是,則進(jìn)行下一步,否則在曲面不光滑處將其分割為兩個(gè)子曲面片段,并以這兩個(gè)子曲面片段代替該曲面;A2. 2、判斷所述曲面或子曲面法向圓錐的角度是否都小于f曲面或子曲面上每條邊碎、界的繞過角度是否都小于f、兩個(gè)曲面或子曲面法向圓錐是否不相交或者其角度是否都小于某個(gè)指定值;當(dāng)上述判斷條件同時(shí)滿足時(shí),則執(zhí)行下一步;否則結(jié)束本流程;A2. 3、根據(jù)曲面或子曲面、曲面或子曲面是否可能有極值點(diǎn)和一個(gè)坐標(biāo)系構(gòu)造相交區(qū)域。
4.根據(jù)權(quán)利要求1所述的曲面求交方法,其特征在于,所述步驟C包括以下子步驟 C1、定義二元公式值;C2、定義求值區(qū)間; C3、定義方程的根; C4、設(shè)計(jì)二元公式;C5、使用上述迭代公式值、求值區(qū)間、方程根和二元公式組成所述二元方程。
5.根據(jù)權(quán)利要求4所述的曲面求交方法,其特征在于,所述步驟C4包括 將曲面交線定義為在區(qū)域坐標(biāo)系Z坐標(biāo)方向上距離為0的點(diǎn)的集合;設(shè)第一個(gè)曲面的方向參數(shù)為u、V,第二個(gè)曲面的方向參數(shù)為p、q,S為第一個(gè)曲面上的 任意一點(diǎn),F(xiàn)為第二個(gè)曲面上與S對(duì)應(yīng)的點(diǎn),S和F的的關(guān)系是(S_F)*Z = 0 ; 設(shè)兩點(diǎn)間(S、F點(diǎn))的距離D = (S-F)*Z,則
6.根據(jù)權(quán)利要求1所述的曲面求交方法,其特征在于,所述步驟D包括子步驟 D1、根據(jù)步驟B獲得的初始點(diǎn)及其對(duì)應(yīng)的追蹤方向,判斷能否在該初始點(diǎn)處向前追蹤 如果可以,則進(jìn)入下一步;否則轉(zhuǎn)到步驟D9 ; D2、確定當(dāng)前追蹤方向?yàn)橄蚯?;D3、根據(jù)初始點(diǎn)和當(dāng)前追蹤方向查找與該初始點(diǎn)對(duì)應(yīng)的曲面相交區(qū)域如果找到所述區(qū)域,則進(jìn)入下一步;否則,則轉(zhuǎn)到步驟D9 ;D4、根據(jù)初始點(diǎn)追蹤下一個(gè)點(diǎn);如果追蹤到下一個(gè)點(diǎn),則進(jìn)入下一步;否則返回步驟D3 ;D5、將追蹤到的下一個(gè)點(diǎn)定義為當(dāng)前點(diǎn);D6、判斷當(dāng)前點(diǎn)是否為終止點(diǎn)或所述相交區(qū)域的端點(diǎn)如果是,則進(jìn)入下一步;否則返 回步驟D4 ;D7、判斷當(dāng)前點(diǎn)是否為初始追蹤點(diǎn)如果不是,則進(jìn)入下一步;否則進(jìn)入步驟D14 ; D8、判斷能否在初始點(diǎn)處向后追蹤如果可以,則進(jìn)入下一步;否則進(jìn)入步驟D14 ; D9、確定當(dāng)前追蹤方向?yàn)楹笙颍籇10、根據(jù)當(dāng)前點(diǎn)和當(dāng)前追蹤方向查找相關(guān)區(qū)域如果找到相關(guān)區(qū)域,則進(jìn)入下一步; 否則,則轉(zhuǎn)到步驟D14;D11、根據(jù)當(dāng)前點(diǎn)追蹤下一個(gè)點(diǎn);如果追蹤到下一個(gè)點(diǎn),則進(jìn)入下一步;否則返回步驟D10 ;D12、將追蹤到的下一個(gè)點(diǎn)定義為當(dāng)前點(diǎn);D13、判斷當(dāng)前點(diǎn)是否為終止點(diǎn)或所述相交區(qū)域的端點(diǎn)如果是,則進(jìn)入下一步;否則 返回步驟D11 ;D14、將前后兩個(gè)追蹤方向都得到的根合并成一個(gè)根。
7.根據(jù)權(quán)利要求6所述的曲面求交方法,其特征在于,所述步驟D5包括以下子步驟 D5. 1、估算追蹤步長(zhǎng);D5. 2、計(jì)算追蹤的切線方向; D5. 3、估算下一個(gè)點(diǎn); D5. 4、計(jì)算下一個(gè)點(diǎn)的迭代范圍; D5. 5、迭代到下一個(gè)點(diǎn);D5. 6、檢查下一點(diǎn)是否合法如果不合法,則進(jìn)入下一步;否則,轉(zhuǎn)到步驟8 ; D5. 7、將追蹤步長(zhǎng)減半,重新估算下一個(gè)點(diǎn)后轉(zhuǎn)回步驟5 ; D5. 8、結(jié)束追蹤。
8.根據(jù)權(quán)利要求7所述的曲面求交方法,其特征在于,所述步驟D5.1中對(duì)追蹤步長(zhǎng)的 估算如下在當(dāng)前值Val的一階偏導(dǎo)數(shù)數(shù)Fv不為0時(shí),估算的追蹤步長(zhǎng)為3 2+ ;在當(dāng)前值Val的一階偏導(dǎo)數(shù)數(shù)Fu不為0時(shí),則估算的追逐步長(zhǎng)為12 dU dU2+淇中,當(dāng)前值Val的參數(shù)為U、V。12 dV dV2
9.根據(jù)權(quán)利要求7所述的曲面求交方法,其特征在于,所述步驟D5.2中對(duì)追蹤切線方 向的計(jì)算如下設(shè)追蹤方向?yàn)閞Vt,當(dāng)前值的參數(shù)為U、V;如果追蹤方向?yàn)橄蚯埃瑒trVt= (Fv,-Fu);否 則 rVt = (-Fv, Fu);如果rVt的長(zhǎng)度不為0,則將rVt單位化后,作為最終的追蹤切線方向;否則,設(shè)判別式 d = Fuv*Fuv-Fuu*Fvv,其中Fu、Fv為當(dāng)前值的一階偏導(dǎo)數(shù),F(xiàn)uv、Fuu、Fvv為當(dāng)前值的二階偏導(dǎo)數(shù);如果判別式d為0,則將當(dāng)前點(diǎn)減去前一個(gè)點(diǎn)得到的向量單位化后,作為最終的追蹤切 線方向;如果追蹤方向?yàn)橄蚝?,則rVt = ("Fvv, Fuv);否則rVt = (Fvv, -Fuv); 如果rVt的長(zhǎng)度不為0,則將rVt單位化后,即為最終的追蹤切線方向;否則將當(dāng)前點(diǎn)減 去前一個(gè)點(diǎn)得到的向量單位化后,作為最終的追蹤切線方向。
10.根據(jù)權(quán)利要求7所述的曲面求交方法,其特征在于,所述步驟D5.4包括以下子步驟D5. 4. 1、將當(dāng)前相交區(qū)域的范圍、所有初始點(diǎn)和當(dāng)前點(diǎn)限定的范圍、所有已知根的端點(diǎn) 和當(dāng)前點(diǎn)限定的范圍以及當(dāng)前點(diǎn)自身限定的范圍的求并。 D5. 4. 2、將所述求并的結(jié)果作為下一個(gè)點(diǎn)的迭代范圍。
11.根據(jù)權(quán)利要求7所述的曲面求交方法,其特征在于,所述步驟D5.5包括以下子步驟D5. 5. 1、定義所述迭代方程組,如下
全文摘要
本發(fā)明提供了一種曲面求交方法,包括步驟將曲面分割為小的相交區(qū)域;確定初始點(diǎn);構(gòu)造曲面求交二元方程;解所述曲面求交二元方程;根據(jù)所述二元方程的根構(gòu)造交線。從而在利用追蹤法進(jìn)行曲面求交過程中有效地提高迭代的效率、確定追蹤步長(zhǎng)和方向的精確性以及曲面接近重合時(shí)的準(zhǔn)確性。
文檔編號(hào)G06F19/00GK101980231SQ20101053641
公開日2011年2月23日 申請(qǐng)日期2010年11月9日 優(yōu)先權(quán)日2010年11月9日
發(fā)明者王作遠(yuǎn) 申請(qǐng)人:廣聯(lián)達(dá)軟件股份有限公司