專(zhuān)利名稱(chēng)::一種移動(dòng)終端中任意圓弧的繪制方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于二次曲線的貝賽爾擬合
技術(shù)領(lǐng)域:
,更為具體地講,涉及一種移動(dòng)終端中任意圓弧的繪制方法。
背景技術(shù):
:可縮放矢量圖形(SVG)Tiny1.2標(biāo)準(zhǔn)是2008年12月由萬(wàn)維網(wǎng)聯(lián)盟(W3C)批準(zhǔn)通過(guò)的開(kāi)放性標(biāo)準(zhǔn),它提供制作豐富圖形內(nèi)容的能力,包括從靜止圖像、動(dòng)畫(huà),到互動(dòng)網(wǎng)絡(luò)以及移動(dòng)應(yīng)用。SVGTinyl.2可以描述多種2次曲線,例如圓和橢圓等,但是基于繪制效率和曲線描述統(tǒng)一方面考慮,通常將2次曲線轉(zhuǎn)換為貝賽爾(Bezier)曲線再進(jìn)行繪制。將2次曲線轉(zhuǎn)換為貝賽爾曲線有很多種方法,但是目前國(guó)內(nèi)外的研究主要集中在如何更精確地描述曲線方程,在執(zhí)行效率方面并不高。富媒體是基于SVGTiny1.2規(guī)范進(jìn)行描述的。采用SVGTinyl.2標(biāo)準(zhǔn)的富媒體引擎中,使用3次貝賽爾(Bezier)曲線來(lái)擬合各種二次曲線,如圓,橢圓,圓弧,這樣做的原因一是因?yàn)槟壳昂芏鄨D形接口直接提供了3次貝塞爾的曲線的繪制方式,例如OpenVG和OpenGL標(biāo)準(zhǔn),貝賽爾(Bezier)曲線描述具有很強(qiáng)的通用性;另外一個(gè)原因就是對(duì)下層繪制函數(shù)的需求少,如果不依賴于硬件加速或者圖形接口,也可以很容易的采用軟件方式實(shí)現(xiàn),便于在不同的平臺(tái)上移植。將二次曲線的圓、橢圓、圓弧轉(zhuǎn)化為3次貝賽爾曲線,教科書(shū)上已經(jīng)有很多現(xiàn)成的方法,很多學(xué)者也對(duì)其進(jìn)行了研究,目前比較流行的方法是將圓轉(zhuǎn)化為4段3次Bezier曲線,每個(gè)象限用一段3次Bezier曲線表示。經(jīng)過(guò)研究,發(fā)現(xiàn)在0<α<π/2的范圍內(nèi),貝賽爾曲線模擬圓弧的誤差可以達(dá)到1.96Χ10_4到2.73Χ10_4,在移動(dòng)終端的屏幕上,這么小的誤差基本是不可察覺(jué)的。傳統(tǒng)的貝賽爾(Bezier)曲線不改變基參數(shù)或控制矩陣的話,只能繪制出接近于圓弧的曲線,如果需要使用貝賽爾曲線畫(huà)出精確的圓弧的話,需要在基參數(shù)和控制矩陣中加入sin和cos的因子,但是含有sin,cos參數(shù)會(huì)導(dǎo)致移動(dòng)終端上計(jì)算復(fù)雜度增加,降低了繪制的性能。
發(fā)明內(nèi)容本發(fā)明目的在于克服現(xiàn)有技術(shù)中圓弧的繪制方法的不足,提出一種移動(dòng)終端中任意圓弧的繪制方法。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明移動(dòng)終端中任意圓弧的繪制方法,其特征在于,包括以下步驟(1)、獲取需要繪制的角度α為0到π的任意圓弧的兩個(gè)端點(diǎn)Ρ(1、Ρ3的坐標(biāo)(Xtl,y0)、(x3,y3)以及半徑r(2)、根據(jù)下式計(jì)算控制點(diǎn)系數(shù)k權(quán)利要求一種移動(dòng)終端中任意圓弧的繪制方法,其特征在于,包括以下步驟(1)、獲取需要繪制的角度α為0到π的任意圓弧的兩個(gè)端點(diǎn)p0、p3的坐標(biāo)(x0,y0)、(x3,y3)以及半徑r(2)、根據(jù)下式計(jì)算控制點(diǎn)系數(shù)k<mrow><mi>k</mi><mo>=</mo><mfencedopen='{'close=''><mtable><mtr><mtd><mfrac><mrow><mn>4</mn><mo>×</mo><mrow><mo>(</mo><mi>r</mi><mo>-</mo><mo>|</mo><mi>B</mi><mo>|</mo><mo>)</mo></mrow><mo>×</mo><mrow><mo>(</mo><msub><mi>x</mi><mn>0</mn></msub><mo>+</mo><msub><mi>x</mi><mn>3</mn></msub><mo>)</mo></mrow></mrow><mrow><mn>3</mn><mo>×</mo><mo>|</mo><mi>B</mi><mo>|</mo><mo>×</mo><mrow><mo>(</mo><msub><mi>y</mi><mn>0</mn></msub><mo>-</mo><msub><mi>y</mi><mn>3</mn></msub><mo>)</mo></mrow></mrow></mfrac></mtd><mtd><mo>|</mo><msub><mi>y</mi><mn>3</mn></msub><mo>-</mo><msub><mi>y</mi><mn>0</mn></msub><mo>|</mo><mo>></mo><mo>|</mo><msub><mi>x</mi><mn>3</mn></msub><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mo>|</mo></mtd></mtr><mtr><mtd><mfrac><mrow><mn>4</mn><mo>×</mo><mrow><mo>(</mo><mi>r</mi><mo>-</mo><mo>|</mo><mi>B</mi><mo>|</mo><mo>)</mo></mrow><mo>×</mo><mrow><mo>(</mo><msub><mi>y</mi><mn>0</mn></msub><mo>+</mo><msub><mi>y</mi><mn>3</mn></msub><mo>)</mo></mrow></mrow><mrow><mn>3</mn><mo>×</mo><mo>|</mo><mi>B</mi><mo>|</mo><mo>×</mo><mrow><mo>(</mo><msub><mi>x</mi><mn>3</mn></msub><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow></mfrac></mtd><mtd><mo>|</mo><msub><mi>y</mi><mn>3</mn></msub><mo>-</mo><msub><mi>y</mi><mn>0</mn></msub><mo>|</mo><mo><</mo><mo>=</mo><mo>|</mo><msub><mi>x</mi><mn>3</mn></msub><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mo>|</mo></mtd></mtr></mtable></mfenced></mrow>式中,|B|為<mrow><mo>|</mo><mi>B</mi><mo>|</mo><mo>=</mo><mfrac><msqrt><msup><mrow><mo>(</mo><msub><mi>x</mi><mn>0</mn></msub><mo>+</mo><msub><mi>x</mi><mn>3</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mn>0</mn></msub><mo>+</mo><msub><mi>y</mi><mn>3</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mn>2</mn></mfrac><mo>;</mo></mrow>(3)、將步驟(2)得到的控制點(diǎn)系數(shù)k代入以下公式,計(jì)算出三次貝賽爾曲線的兩個(gè)控制點(diǎn)p1、p2坐標(biāo)(x1,y1)、(x2,y2)(x1,y1)=(x0+ky0,y0kx0),(x2,y3)=(x3ky3,y3+kx3);(4)、三次貝賽爾曲線方程為p(t)=(1t)3p0+3t(1t)2p1+3t2(1t)p2+t3p30≤t≤1在0到1范圍,取不同的t值,并將上式p0,p1,p2,p3代入各自的坐標(biāo)(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3),得到角度α為0到π的任意圓弧上的不同點(diǎn)p(t)的坐標(biāo)值(x(t),y(t)),然后依據(jù)坐標(biāo)值(x(t),y(t))進(jìn)行任意圓弧的繪制。全文摘要本發(fā)明公開(kāi)了一種移動(dòng)終端中任意圓弧的繪制方法,采用了中點(diǎn)規(guī)則去計(jì)算需要繪制圓弧的三次貝賽爾(Bezier)曲線的控制點(diǎn)p1,p2,先計(jì)算貝賽爾曲線控制點(diǎn)系數(shù)k,然后,依據(jù)公式(x1,y1)=(x0+ky0,y0-kx0),(x2,y3)=(x3-ky3,y3+kx3),計(jì)算出控制點(diǎn)p1、p2坐標(biāo)(x1,y1)、(x2,y2),代入三次貝賽爾曲線方程p(t)=(1-t)3p0+3t(1-t)2p1+3t2(1-t)p2+t3p30≤t≤1,得到角度α為0到π的任意圓弧上的不同點(diǎn)p(t)的坐標(biāo)值(x(t),y(t)),然后依據(jù)坐標(biāo)值(x(t),y(t))進(jìn)行任意圓弧的繪制。由于不是涉及sin和cos參數(shù),因此,計(jì)算復(fù)雜度小,適用于移動(dòng)終端上的圓弧繪制。這種方法可以適用于圓弧對(duì)應(yīng)的角度0<α<π的情況下,但在0<α<π/2的時(shí)候圓弧模擬精確度最佳。如果圓弧對(duì)應(yīng)的角度α大于π,可能將需要繪制的圓弧分為多條三次的貝賽爾曲線來(lái)表示。文檔編號(hào)G06T11/20GK101958001SQ20101027635公開(kāi)日2011年1月26日申請(qǐng)日期2010年9月8日優(yōu)先權(quán)日2010年9月8日發(fā)明者丘志杰,羅建超申請(qǐng)人:東莞電子科技大學(xué)電子信息工程研究院