據(jù)需要拉伸 曲線上每個三維數(shù)據(jù)點處對應(yīng)的預(yù)設(shè)變化矩陣,將基本二維圖形變換成三維模型,而預(yù)設(shè) 變化矩陣又是通過其它變換矩陣得到的。
[0050] 可選的,根據(jù)下列方式確定每個三維數(shù)據(jù)點處對應(yīng)的預(yù)設(shè)變化矩陣:針對拉伸曲 線上的每個三維數(shù)據(jù)點,根據(jù)三維模型的形狀、以及基本二維圖形的形狀和相對位置,確定 每個三維數(shù)據(jù)點處對應(yīng)的用于對基本二維圖形進行旋轉(zhuǎn)的旋轉(zhuǎn)矩陣、用于對基本二維圖形 進行縮放的縮放矩陣、以及用于對基本二維圖形進行平移的平移矩陣;根據(jù)確定的旋轉(zhuǎn)矩 陣、縮放矩陣和平移矩陣,確定每個三維數(shù)據(jù)點處對應(yīng)的預(yù)設(shè)變化矩陣。
[0051] 實施中,在確定出拉伸曲線之后,要確定拉伸曲線上每個三維數(shù)據(jù)點處對應(yīng)的變 化矩陣,也就相當(dāng)于可以理解為,以基本的二維圖形的形狀和相對位置為基準(zhǔn),同時根據(jù)要 建立的三維模型的形狀,將每個三維數(shù)據(jù)點處看作是一層,每一層的圖形(即變換后的二 維圖形)都需要通過對組成基本二維圖形輪廓的所有二維數(shù)據(jù)點進行矩陣變換得到。
[0052] 也就是說,針對拉伸曲線上的每一個三維數(shù)據(jù)點,可以根據(jù)三維模型的形狀、以及 基本二維圖形的形狀和相對位置,確定能夠?qū)⒒径S圖形進行旋轉(zhuǎn),進而通過基本的二 維圖形得到該三維數(shù)據(jù)點所在層的圖形的相對位置,其中相對位置是指該層的圖形與基本 二維圖形之間的相對位置(即變換后的二維圖形)的旋轉(zhuǎn)矩陣;以及確定能夠?qū)⒒径S 圖形進行縮放,進而通過基本的二維圖形得到該三維數(shù)據(jù)點所在層的圖形的尺寸大?。?變換后的二維圖形)的縮放矩陣;以及確定能夠?qū)⒒径S圖形進行平移,進而通過基本 的二維圖形得到該三維數(shù)據(jù)點所在層的圖形在坐標(biāo)系中的位置(即變換后的二維圖形)的 平移矩陣。
[0053] 在確定出拉伸曲線上的每一個三維數(shù)據(jù)點對應(yīng)的旋轉(zhuǎn)矩陣、縮放矩陣和平移矩陣 后,還可以根據(jù)確定的旋轉(zhuǎn)矩陣、縮放矩陣和平移矩陣,確定每個三維數(shù)據(jù)點處對應(yīng)的預(yù)設(shè) 變化矩陣。即將旋轉(zhuǎn)矩陣、縮放矩陣和平移矩陣組合為一個預(yù)設(shè)變化矩陣。針對拉伸曲線 上的每一個三維數(shù)據(jù)點,進行矩陣變換時,只需將基本二維圖形輪廓的所有二維數(shù)據(jù)點乘 以相應(yīng)的變化矩陣即可。為了更加清楚的對確定預(yù)設(shè)變化矩陣的方式進行說明,下面列舉 一種可行的變化矩陣的公式為:
[0054] M = Mr*Ms*Mt 公式一
[0055] 其中,M是變化矩陣;MR是旋轉(zhuǎn)矩陣;M s是縮放矩陣;M τ是平移矩陣。
[0056] 平移矩陣Mt可以用以下形式表示:
[0058] 其中,Tx、TjPTz為平移因子。
[0059] 變化矩陣M可以用以下形式表示:
[0061] 其中,從M11、M12、M13-直到M 44為空間變換矩陣。
[0062] 實施中,應(yīng)用變化矩陣M對二維圖形進行矩陣變換的公式為:
[0068] 其中,[x< y' z' 1]表示縮放后的矩陣;[x y z 1]表示由縮放前的二維數(shù)據(jù) 點構(gòu)成的矩陣。
[0069] 下面具體介紹旋轉(zhuǎn)矩陣如何確定,可選的,根據(jù)下列方式確定每個三維數(shù)據(jù)點處 對應(yīng)的旋轉(zhuǎn)矩陣:根據(jù)變換后的二維圖形的法向量、以及該變換后的二維圖形所在的三維 數(shù)據(jù)點的位置處的切向量,確定法向量和切向量之間的夾角;根據(jù)確定的夾角,確定法向量 和切向量之間的垂直向量,并將垂直向量作為旋轉(zhuǎn)向量;根據(jù)確定的夾角和旋轉(zhuǎn)向量,確定 每個三維數(shù)據(jù)點處對應(yīng)的旋轉(zhuǎn)矩陣。
[0070] 也就是說,組成三維模型的每個變換后的二維圖形的法線方向的向量為預(yù)設(shè)的法 向量,而針對每個變換后的二維圖形,確定該變換后的二維圖形經(jīng)過的拉伸曲線上的三維 數(shù)據(jù)點處的切向量,并確定上述法向量和切向量之間的夾角Θ ;根據(jù)確定的兩者之間的夾 角Θ,確定兩者之間的垂直向量,將該垂直向量作為旋轉(zhuǎn)向量R ;根據(jù)確定的夾角Θ和旋轉(zhuǎn) 向量R,確定每個三維數(shù)據(jù)點處對應(yīng)的用于對基本二維圖形進行旋轉(zhuǎn)的旋轉(zhuǎn)矩陣Μκ。
[0071] 實施中,計算拉伸曲線上每個三維數(shù)據(jù)點處的切線方向的向量。根據(jù)拉伸建模效 果的需求,有些拉伸建模效果需要使拉伸曲線的路徑上面的每個三維數(shù)據(jù)點處的變換后 的二維圖形的截面與當(dāng)前的三維數(shù)據(jù)點的切線垂直,這樣拉伸出來的效果更佳的平滑真 實。根據(jù)拉伸直線中包含的三維數(shù)據(jù)點(P1 (X,y, z),P2(x, y, z),P3(x, y, z),P4(x, y, Z)...... PN(x,y,z)},計算每個三維數(shù)據(jù)點的切線方向,其中,該三維數(shù)據(jù)點的切向量采用三維空間 向量表示:TN(x, y, z) = PN(x, y, z)-(PN_l) (X,y, z)。這樣依次計算每個三維數(shù)據(jù)點,獲得一 組切線數(shù)據(jù) Tangent IT1 (X,y, z),T2 (X,y, z),T3 (X,y, z),T4 (X,y, z)......Tn (x, y, z)} 〇
[0072] 計算三維拉伸曲線中包含的每個三維數(shù)據(jù)點對應(yīng)二維圖形的旋轉(zhuǎn)矩陣。本發(fā)明實 施例提供的三維拉伸建模方法,根據(jù)需要預(yù)設(shè)變換后的二維圖形的法線方向為N(0, 0, 1), 每個三維數(shù)據(jù)點的切線方向的向量為T(x,y,z)(即該二維圖形所在的三維數(shù)據(jù)點處的切 向量),采用向量點積Ν·Τ = cos( Θ ),求得N和T的夾角Θ,再通過采用向量叉積NXT = R,獲得向量N和T的垂直向量,將該垂直向量作為旋轉(zhuǎn)向量R ;并根據(jù)向量N沿向量R旋轉(zhuǎn) 角度Θ,采用Matrix Rotation Axis (矩陣旋轉(zhuǎn)軸)方法來求取三維數(shù)據(jù)點處對應(yīng)的旋轉(zhuǎn) 矩陣Μκ。
[0073] 下面具體介紹旋轉(zhuǎn)矩陣如何確定,可選的,根據(jù)下列方式確定每個三維數(shù)據(jù)點處 對應(yīng)的縮放矩陣:針對拉伸曲線上的每個三維數(shù)據(jù)點,根據(jù)三維模型的形狀、基本二維圖形 的形狀和相對位置、以及該三維數(shù)據(jù)點的位置,確定該三維數(shù)據(jù)點處對應(yīng)的用于組成縮放 矩陣的縮放因子,以確定每個三維數(shù)據(jù)點處對應(yīng)的縮放矩陣。
[0074] 實施中,在確定出拉伸曲線之后,還可以確定拉伸曲線上每個三維數(shù)據(jù)點處對應(yīng) 的縮放矩陣,也就相當(dāng)于可以理解為,以基本的二維圖形的形狀和相對位置為基準(zhǔn),同時根 據(jù)要建立的三維模型的形狀,將每個三維數(shù)據(jù)點處看作是一層,每一層的圖形的尺寸大小 (即變換后的二維圖形的尺寸大小)都需要通過對組成基本二維圖形輪廓的所有二維數(shù)據(jù) 點進行矩陣縮放變換得到。
[0075] 也就是說,針對拉伸曲線上的每一個三維數(shù)據(jù)點,可以根據(jù)三維模型的形狀、以及 基本二維圖形的形狀和相對位置,確定能夠?qū)⒒径S圖形進行縮放的縮放因子,即確定 對基本二維圖形進行縮放的縮放矩陣,進而通過基本二維圖形得到該三維數(shù)據(jù)點所在層的 圖形的尺寸大?。丛摻M成該圖形的各個三維數(shù)據(jù)點的坐標(biāo)位置)。
[0076] 同時,針對拉伸曲線中包含的每個三維數(shù)據(jù)點,縮放是將組成基本二維圖形輪廓 的所有二維數(shù)據(jù)點乘以該三維數(shù)據(jù)點對應(yīng)的縮放矩陣,即對基本二維圖形中的二維數(shù)據(jù)點 進行縮放的公式為:
[0077] [X' y' Z1 1] = [X y z 1]*MS 公式六
[0078] 其中,[x< Y1 Z1 1]表示縮放后的矩陣;[X y z 1]表示由縮放前的二維數(shù)據(jù) 點構(gòu)成的矩陣;而縮放矩陣Ms可以用以下形式表示:
[0080] 其中,Sx、SjP S z為縮放因子;由于二維數(shù)據(jù)點用Pn (X,y)表示,因此,公式一中的 z取1。
[0081] 實施中,可以根據(jù)三維模型的形狀,以及三維數(shù)據(jù)點的位置,確定需要縮放的倍數(shù) (即縮放因子)等,如可以通過改變縮放因子的數(shù)值,將基本二維圖形縮小〇. 5倍或者放大 1.4倍等不同的縮放倍數(shù);也可以在拉伸路徑為曲線的各個三維數(shù)據(jù)點處,對基本二維圖 形進行縮放,即可以根據(jù)需要對三維模型的某一部分進行平滑縮放。
[0082] 例如,如圖4所示,為本發(fā)明實施例提供的對圓形進行直線拉伸和縮放的三維模 型示意圖;圖4中所示的三維模型,可以通過對二維的圓形進行直線拉伸,并對三維模型不 同的部分進行縮放得到