新四季網

3d圖形渲染中的三角函數計算方法

2023-05-27 03:18:26 2


專利名稱::3d圖形渲染中的三角函數計算方法
技術領域:
:本發明涉及3D圖形渲染技術,特別涉及一種3D圖形渲染中的三角函數計算方法。技術背景在3D圖形程序中,經常用到三角函數求值的運算,例如粒子系統、Billboard算法、場景內草體生成、骨骼動畫模塊等。三角函數的運算效率會影響圖形的效果,提高三角函數運算效率有助於程序流暢運行,增強粒子效果的表現等。在現有技術中,根據DirectXSDK工具包中的數學庫XNAMath實現三角函數的計算,詳細介紹如下DirectXSDK是微軟的多媒體接口方案的軟體開發工具包,其中最重要的部分便是圖形渲染接口,DirectXSDK工具包提供了數學庫XNAMath,數學庫XNAMath對3D圖形的算法作了很多效率優化。例如,XNAMath實現了SSE指令優化的三角函數算法,該算法利用正弦和餘弦的冪級數展開式,展開到12項來近似計算三角函數的值。其中,正弦函數的計算公式如下sin(V)=V-V"3/3!+V"5/5!-V"7/7!+V"9/9!-V"ll/ll!+V"13/13!-V'15/15!+V"17/17!-V"19/19!+V"21/21!-V"23/23!,餘弦函數的計算公式如下cos(V)=l-V"2/2!+V"4/4!-V"6/6!+V"8/8!-V"10/10!+V"12/12!-V"14/14!+V"16/16!-V"18/18!+V"20/20!-V"22/22!。而其他三角函數可通過正弦函數和餘弦函數的計算轉換而得到,例如正切函數等於正弦函數值除以餘弦函數值,餘切函數等於餘弦函數值除以正弦函數值。可見,現有技術中主要通過12項的冪級數展開式實現三角函數的計算,由於冪級數展開式的項數過多,因此運算效率比較低。
發明內容有鑑於此,本發明提供一種3D圖形渲染中的三角函數計算方法,能夠提高3D圖形渲染中的三角函數運算效率。為解決上述技術問題,本發明的技術方案是這樣實現的一種3D圖形渲染中的三角函數計算方法,該方法包括根據弧度r計算與r對應的臨時數據m=押256/(2*π),然後對臨時數據m取整數部分作為與r對應的序號n,根據序號η計算與r對應的大角t=η*2*π/256,並計算與r對應的小角k=r-t;預先建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係,根據所述對應關係、以及大角t所對應的序號η查找大角t的正弦函數值sin(t)和餘弦函數值COs(t);計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),其中,cos(k)=1-0.5*k*k,sin(k)=k-(l/6.0)*k*k*k;計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r),其中,sin(r)=sin(t+k)=sin(t)*cos(k)+cos(t)*sin(k),cos(r)=cos(t+k)=cos(t)*cos(k)-sin(t)*sin(k)。所述建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係的方法為建立序號0和sin(0*2*π/256)的對應關係、序號1和sin(1*2*π/256)的對應關係、序號2和sin(2*2*π/256)的對應關係、...以及序號255和sin(255*2*π/256)的對應關係。所述建立每一序號與該序號所對應的大角的餘弦函數值的一一對應關係的方法為建立序號0和cos(0*2*π/256)的對應關係、序號1和cos(1*2*π/256)的對應關係、序號2和cos(2*2*π/256)的對應關係、.··以及序號255和cos(255*2*π/256)的對應關係。該方法進一步包括根據所計算的正弦函數值sin(r)和餘弦函數值cos(r)計算正切函數值tg(r)=sin(r)/cos(r)。該方法進一步包括根據所計算的正弦函數值sin(r)和餘弦函數值Cos(r)計算餘切函數值ctg(r)=cos(r)/sin(r)。根據本發明所提供的技術方案,將弧度r分解為大角t和小角k,根據預先建立的每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係查找大角t的正弦函數值sin(t)和餘弦函數值cos(t),再利用兩項的冪級數展開式計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),最後根據三角函數和差公式計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r)。可見,本發明採用查表法計算大角t的正弦函數值sin(t)和餘弦函數值cos(t),採用冪級數法計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),從而最終得到弧度r的正弦函數值sin(r)和餘弦函數值cos(r),計算方法簡單,避免了採用現有技術中項數過多的冪級數展開式,能夠提高3D圖形渲染中的三角函數運算效率。圖1為本發明所提供的一種3D圖形渲染中的三角函數計算方法的流程圖。具體實施方式為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖並舉實施例,對本發明所述方案作進一步地詳細說明。本發明的核心思想為將弧度r分解為大角t和小角k,根據預先建立的每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係查找大角t的正弦函數值sin(t)和餘弦函數值cos(t),再利用兩項的冪級數展開式計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),最後根據三角函數和差公式計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r)。圖1為本發明所提供的一種3D圖形渲染中的三角函數計算方法的流程圖。如圖1所示,該方法包括以下步驟步驟101,根據弧度r計算與r對應的臨時數據m=r*256/(2*π),然後對臨時數據m取整數部分作為與r對應的序號n,根據序號η計算與r對應的大角t=η*2*π/256,並計算與r對應的小角k=r-t。在本步驟中,r、t、k的單位都為弧度。對本步驟的方法舉例說明假設弧度r等於π/2,則m=r*256/(2*π)=64,對m取整數部分得到η為64,則得到大角t=η*2*π/256=π/2,則得到小角k=r_t=0。需要說明的是,當m沒有整數部分,則視為整數部分為0,類似地,當m沒有小數部分,則視為小數部分為0。步驟102,預先建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係,根據所述對應關係、以及大角t所對應的序號η查找大角t的正弦函數值sin(t)和餘弦函數值COs(t)。由於弧度r的值大於等於0且小於2π(弧度0與弧度2π視為相等,則弧度的最大值必定小於2π),則臨時數據的值小於256,臨時數據所取的整數部分得到的序號的最大值為255,因此,序號的可能取值為0、1、2···255。當序號為0時,與該序號對應的大角的正弦函數值為sin(0*2*π/256),當序號為1時,對該序號對應的大角的正弦函數值sin(1*2*π/256),當序號為2時,對該序號對應的大角的正弦函數值sin(2*2*π/256),...,當序號為255時,對該序號對應的大角的正弦函sin(255*2*π/256)ο基於上述分析,可知建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係的方法如下建立序號0和sin(0*2*π/256)的對應關係、序號1和sin(1*2*π/256)的對應關係、序號2和sin(2*2*π/256)的對應關係、...以及序號255和sin(255*2*π/256)的對應關係。類似地,當序號為0時,與該序號對應的大角的正弦函數值為cos(0*2*π/256),當序號為1時,對該序號對應的大角的正弦函數值cos(1*2*π/256),當序號為2時,對該序號對應的大角的正弦函數值cos(2*2*π/256),...,當序號為255時,對該序號對應的大角的正弦函數值cos(255*2*π/256)。基於上述分析,可知建立每一序號與該序號所對應的大角的餘弦函數值的一一對應關係的方法如下建立序號0和cos(0*2*π/256)的對應關係、序號1和cos(1*2*π/256)的對應關係、序號2和cos(2*2*π/256)的對應關係、.··以及序號255和cos(255*2*π/256)的對應關係。另外,也可根據同一弧度的正弦函數值的平方與餘弦函數值的平方和等於1,或者當弧度a小於π/2時,弧度a的正弦函數值等於π/2與a的差的餘弦函數值,以及現有技術中正弦和餘弦函數的其他互相轉換的法則,對所建立的每一序號與該序號所對應的大角的正弦函數值的一一對應關係進行轉換,從而得到每一序號與該序號所對應的大角的餘弦函數值的一一對應關係。對查找的方法舉例說明假設步驟101所計算的η為64、且大角t=η*2*π/256=n/2,則在所述對應關係中查找與序號64對應的大角η/2的正弦函數值為sin(64*2*π/256),以及與序號64對應的大角π/2的餘弦函數值為cos(64*2*π/256)。步驟103,計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),其中,cos(k)=1-0.5*k*k,sin(k)=k-(l/6.0)*k*k*k。上述正弦函數值sin(k)和餘弦函數值cos(k)是根據現有技術中的冪級數展開式而得到的,因為k<(2*π/256),因此只要展開兩項就可以達到單精度的需求。需要說明的是,上述步驟102和103的執行先後順序沒有特別的限定,可先執行步驟102,後執行步驟103,也可先執行步驟103,後執行步驟102,也可並行執行步驟102和步驟103。步驟104,計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r),其中,sin(r)=sin(t+k)=sin(t)*cos(k)+cos(t)*sin(k),cos(r)=cos(t+k)=cos(t)*cos(k)-sin(t)*sin(k)。上述計算的依據為現有技術中的三角函數和差公式。進一步地,還可依據所計算的正弦函數值sin(r)和餘弦函數值cos(r)計算正切函數值tg(r)=sin(r)/cos(r)、餘切函數值ctg(r)=cos(r)/sin(r)。至此,本流程結束。下面通過幾個實施例對上述方法舉例說明。例如,下述代碼用於建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係enum{c_sincos_shift=8,c—sincos_size=1c_sincos_shift,};floats_sincos_m=float((c_sincos—size/2)/M—PI);floats_sincos_r=float(M_PI/(c_sincos_size/2));floats_sincos[c_sincos_size];const—ml28sone={l.Of,l.Of,l.Of,l.Of};const_m128s—half={0.5f,0.5f,0.5f,0.5f};6voidtable一init{for(inti=0;i<c_sincos_size;++i){s_sincos[i]=(float)sin(i*2.0*MPI/c_sincos_size);再例如,下述代碼採用C++實現了如下步驟第一,根據對應關係、以及大角t所對應的序號η查找大角t的正弦函數值sin(t)和餘弦函數值cos(t),第二,計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),第三,計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r)。其中,下述代碼中的a相當於cos(k),b相當於sin(k),χ相當於sin(t),y相當於cos(t),s相當於sin(r),c相當於cos(r)voidcpp_sincos(floatr,float&s,float&c){floatt—.r*s_sincos_m;inti=int(t);floatk=(t-i)*s_sincos_r;floatb=k-(l/6.0f)*k*k*k;floata=I-OJPk*^floatχ=s_sincos[i&(c_sincos_size-l)];floaty=s_sincos[(i+c_sincos_size/4)&(c一sincos—size-1)];s=x*a+y*b;c=y*a-x*b;}再例如,下述代碼採用SSE指令實現了和上述代碼相同的功能,只不過下述代碼的運行速度更加快捷voidxmm—sincos(floatr,float&s,float&c){一ml28t=_mm_mul_ss(_mm_set_ss(r),_mm_set_ss(s_sincos_m));inti二_mm_cvt_ss2si(t);—ml28k;k=_mm_mul_ss(_mm_sub_ss(t,—mm—cvt—si2ss(k,i)),_mm_set_ss(s_sincos_r));—ml28k2=_mm_mul_ss(k,k);—ml28b=—mm—sub—ss(k,_mm_mul_ss(_mm_mul_ss(k,_mm_set_ss(1.0f/6.0f)),k2));—ml28a=_mm—sub—ss(s—one,—mm—mul_ss(k2,s_hali));—ml28χ二—mm—load—ss(s_sincos+(i&(c—sincos_size-l)));—ml28y=—mm—load—ss(s—sincos+((i+c_sincos—size/4)&(c—sincos—size-1)));_mm_store—ss(&s,_mm_add_ss(_mm_mul_ss(x,a),_mm_mul_ss(y,b)));—mm—store—ss(&c,_mm_sub_ss(_mm_mul—ss(y,a),_mm_mul_ss(x,b)));}在實際的3D圖形渲染中,本發明所提供的三角函數計算方法具備廣泛的應用場旦ο例如,在現有技術中,Billboard技術能夠使得在3D場景中始終朝向鏡頭繪製圖形。結合本發明,步驟如下首先,根據Billboard貼片相對於變換後的坐標軸的偏轉角度,計算偏轉角度的三角函數值,具體計算三角函數值的方法可參考上述步驟101和104以及實施例,根據所計算的三角函數值確定Billboard貼片的朝向,其次,根據所確定的朝向,計算Billboard貼片四個頂點的坐標,並且投放到渲染模塊進行渲染。再例如,本發明在隨機生成對象中也具有廣泛的應用,例如,粒子發射器、場景中的草體等。以粒子發射器為例結合本發明,步驟如下首先,根據觸發條件生成被發射的子物件,然後隨機獲得子物件的初始角度,並計算初始角度的三角函數值,以確定初始發射方向,具體計算三角函數值的方法可參考上述步驟101和104以及實施例,最後根據所確定的初始發射方向定時計算子物件位置並且渲feο總之,本發明所提供的三角函數計算方法在3D圖形渲染中能夠具有廣泛的應用場景,凡是涉及三角函數計算的步驟均可採用本發明的方法,上述實施例以及應用場景的描述並非用於限定本發明,僅為舉例說明。綜上,在本發明中,將弧度r分解為大角t和小角k,根據預先建立的每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係查找大角t的正弦函數值sin(t)和餘弦函數值cos(t),再利用兩項的冪級數展開式計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),最後根據三角函數和差公式計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r)。可見,本發明採用查表法計算大角t的正弦函數值sin(t)和餘弦函數值cos(t),採用冪級數法計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),從而最終得到弧度r的正弦函數值sin(r)和餘弦函數值cos(r),計算方法簡單,避免了採用現有技術中項數過多的冪級數展開式,能夠提高3D圖形渲染中的三角函數運算效率。採用本發明的方案,與C函數相比,運算效率提升為原來的4倍,與XNAMath相比,運算效率提升為2.4倍。而且,本發明的運算精度接近7位有效數字,比XNAMath的6位有效數字也有提升。以上所述,僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。權利要求1.一種3D圖形渲染中的三角函數計算方法,其特徵在於,該方法包括根據弧度r計算與r對應的臨時數據m=押256/(2*π),然後對臨時數據m取整數部分作為與r對應的序號n,根據序號η計算與r對應的大角t=η*2*π/256,並計算與r對應的小角k=r-t;預先建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係,根據所述對應關係、以及大角t所對應的序號η查找大角t的正弦函數值sin(t)和餘弦函數值COs(t);計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),其中,cos(k)=1-0.5*k*k,sin(k)=k-(l/6.0)*k*k*k;計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r),其中,sin(r)=sin(t+k)=sin(t)*cos(k)+cos(t)*sin(k),cos(r)=cos(t+k)=cos(t)*cos(k)-sin(t)*sin(k)。2.根據權利要求1所述的方法,其特徵在於,所述建立每一序號與該序號所對應的大角的正弦函數值的一一對應關係的方法為建立序號0和sin(0*2*π/256)的對應關係、序號1和sin(1*2*π/256)的對應關係、序號2和sin0*2*π/256)的對應關係、...以及序號255和sin055*2*π/256)的對應關係。3.根據權利要求2所述的方法,其特徵在於,所述建立每一序號與該序號所對應的大角的餘弦函數值的一一對應關係的方法為建立序號O和cos(0*2*π/256)的對應關係、序號1和cos(1*2*π/256)的對應關係、序號2和cos(2*2*π/256)的對應關係、...以及序號255和cos(255*2*π/256)的對應關係。4.根據權利要求1所述的方法,其特徵在於,該方法進一步包括根據所計算的正弦函數值sin(r)和餘弦函數值cos(r)計算正切函數值tg(r)=sin(r)/cos(r)。5.根據權利要求4所述的方法,其特徵在於,該方法進一步包括根據所計算的正弦函數值sin(r)和餘弦函數值cos(r)計算餘切函數值ctg(r)=cos(r)/sin(r)。全文摘要本發明公開了一種3D圖形渲染中的三角函數計算方法,將弧度r分解為大角t和小角k,根據預先建立的每一序號與該序號所對應的大角的正弦函數值的一一對應關係,以及每一序號與該序號所對應的大角的餘弦函數值的一一對應關係查找大角t的正弦函數值sin(t)和餘弦函數值cos(t),再利用兩項的冪級數展開式計算小角k的正弦函數值sin(k)和餘弦函數值cos(k),最後根據三角函數和差公式計算弧度r的正弦函數值sin(r)和餘弦函數值cos(r)。採用本發明公開的方法能夠提高3D圖形渲染中的三角函數運算效率。文檔編號G06T15/00GK102034260SQ201010621848公開日2011年4月27日申請日期2010年12月27日優先權日2010年12月27日發明者蔣黎申請人:北京像素軟體科技股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀