999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

普通旋輪線和玫瑰線的逐點生成新算法

2014-12-29 00:00:00張博
計算機時代 2014年9期

摘 要: 構(gòu)造了普通旋輪線和玫瑰線逐點生成的遞推公式并給出算法。算法中避免了三角函數(shù)運算,計算普通旋輪線上每對繪圖點只需要2次乘法運算;計算玫瑰線上每對繪圖點只需要4次乘法運算,算法效率有很大提升。利用所給出的構(gòu)造方法和分析方法,也可以構(gòu)造出圓和心臟線等圖形的生成算法,因此,本文對于基于角度的圖形繪制算法研究具有參考意義。

關(guān)鍵詞: 普通旋輪線; 玫瑰線; 逐點生成算法; 遞推公式; 構(gòu)造方法

中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2014)09-54-03

0 引言

對于極坐標表示的曲線和含有三角函數(shù)的參數(shù)方程表示的曲線,生成曲線時要用到三角函數(shù)運算,繪圖時如直接進行計算,計算量太大。常用方法是采用角度作為增量,通過構(gòu)造遞推公式計算新的坐標點,這樣可減少運算量。

文獻[2]給出玫瑰線和普通旋輪線的逐點生成算法,計算每個點分別需要2次乘法,計算每對輸出點分別需要4次乘法運算。本文通過構(gòu)造新的遞推公式,使得算法的執(zhí)行速度更快,生成普通旋輪線每對繪圖點,只需2次乘法;生成玫瑰線每對繪圖點,只需4次乘法,乘法的運算次數(shù)減少了。文獻[3]給出了心臟線的逐點生成算法,若采用本文給出的構(gòu)造方法,可使乘法運算次數(shù)減少一半。

1 構(gòu)造遞推公式用到的兩個恒等式

⑴ 已知:α,β為角度,求證:cos(α+2β)=2cos(β)cos(α+β)-cos(α)

證明:2cos(β)cos(α+β)-cos(α)

=2cos(β)(cos(α)cos(β)-sin(α)sin(β))-cos(α)

=2cos2(β)cos(α)-cos(α)-2sin(α)sin(β)cos(β)

=cos(α)cos(2β)-sin(α)sin(2β)

=cos(α+2β)

原式成立。

⑵ 已知:α,β為角度,求證:sin(α+2β)=2cos(β)sin(α+β)-sin(α)

證明:2cos(β)sin(α+β)-sin(α)

=2cos(β)(sin(α)cos(β)+cos(α)sin(β))-sin(α)

=2cos2(β)sin(α)-sin(α)+2cos(β)sin(β)cos(α)

=sin(α)+cos(2β)+cos(α)sin(2β)

=sin(α+2β)

原式成立。

2 普通旋輪線

2.1 遞推公式構(gòu)造

在直角坐標系中,普通旋輪線的參數(shù)方程為:

其中,x,y的單位為像素。

把以上區(qū)間分成m份,每份的角度為:。當θ=kt時(k=0,1,…,m),分別計算出x和y的值。

為表達遞推公式方便,令f(n)=rcos(n·t),g(n)=rsin(n·t),其中0≤n≤m。

令α=n·t,β=t,以上兩個恒等式變?yōu)椋?/p>

兩邊同時乘以r,可得遞推公式:

f(n+2)=2cos(t)·f(n+1)-f(n)

g(n+2)=2cos(t)·g(n+1)-g(n)

初始化計算以下各式的值,

f(0)=rcos(0),g(0)=rsin(0)。

f(1)=rcos(t),g(1)=rsin(t)。

由遞推公式計算新的f(n)和g(n),再按公式進行加法運算就可得到對應(yīng)的x和y值。

2.2 算法

Cycloid (r, m, color)

int r, m, color;

{ int i;

float pi, v, t, u, d, xn0, xn1, xn2, yn0, yn1, yn2, x, y;

pi=3.14159;

r=400;

m=400;

t=2*pi/m;

d=2*Cos(t);

xn0=r*Cos(0); /*初始化計算第一個點*/

yn0=r*Sin(0);

x=-yn0;

y=r-xn0;

drawpixel(int(x+0.5), int(y+0.5), color); /*顯示第一個點*/

xn1=r*Cos(t); /*初始化計算第二個點*/

yn1=r*Sin(t);

v=r*t; /*用v來構(gòu)造rθ*/

u=r*t; /*u存放rθ的增量*/

x=v-yn1;

y=r-xn1;

drawpixel (int(x+0.5), int(y+0.5), color); /*顯示第二個點*/

for(i=2; i<=m; i++);

{ v=v+u;

xn2=d*xn1-xn0; /*計算新的點*/

yn2=d*yn1-yn0;

x=v-yn2;

y=r-xn2;

drawpixel ( int(x+0.5), int(y+0.5),color);

xn0=xn1;

yn0=yn1;

xn1=xn2;

yn1=yn2;

}

} /*Cycloid*/

xn0,xn1,xn2對應(yīng)f(n),f(n+1)和f(n+2);yn0,yn1,yn2對應(yīng)g(n),g(n+1)和g(n+2)。v用來構(gòu)造r·n·t。x,y為要顯示點的橫縱坐標值。

2.3 運行結(jié)果

用VB6.0編寫程序得到輸出如圖1,共顯示三個周期,其中,r=400,m=400。

2.4 算法分析

算法速度取決于取點數(shù)的多少和計算每個點的計算量。初始化后,計算每對繪圖點需要2次乘法運算。計算m個繪圖點需要2m次乘法運算。

3 玫瑰線

3.1 遞推公式構(gòu)造

玫瑰線的極坐標方程為ρ=αsinkθ,θ∈[0,2π],其中,θ為弧度,k為常數(shù)。

在直角坐標系中,玫瑰線的參數(shù)方程為:

其中,x,y為單位像素。

變換上式可得:

假設(shè)把以上區(qū)間分成m份,每份的角度為:。當θ=kt時(k=0,1,…,m),分別計算出x和y的值。

為表達遞推公式,令f(n)=cos(n·(k+1)·t),g(n)=sin(n·(k+1)·t),其中0≤n≤m。f1(n)=cos(n·(k-1)·t),g1(n)=sin(n·(k-1)·t),其中0≤n≤m。

構(gòu)造表達式與普通螺旋線采用的方法相同。

3.2 算法

Stancu (a, m, color)

int a, m, color;

{ int i;

float xn0,xn1, xn2,yn0, yn1, yn2, xm0,xm1, xm2, ym0,ym1, ym2;

float pi, k, t, t2, d, d2, x, y;

pi=3.14159;

k=2; /*極坐標方程中的k*/

a=2000;

m=1000;

t=(k+1)*(2*pi/m);

t2=(k-1)*(2*pi/m);

d=2*Cos(t);

d2=2*Cos(t2);

xn0=a/2*Cos(0); /*初始化計算第一個點,此時n=0*/

yn0=a/2*Sin(0);

xm0=a/2*Cos(0);

ym0=a/2*Sin(0);

x=yn0+ym0;

y=-xn0+xm0;

drawpixel (int(x+0.5), int(y+0.5),color); /*顯示第一個點*/

xn1=a/2*Cos(t); /*初始化計算第二個點,此時n=1*/

yn1=a/2*Sin(t);

xm1=a/2*Cos(t2);

ym1=a/2*Sin(t2);

x=yn1+ym1;

y=-xn1+xm1;

drawpixel (int(x+0.5), int(y+0.5), color); /*顯示第二個點*/

for(i=2; i<=m; i++)

xn2=d*xn1-xn0; /*計算新的點*/

yn2=d*yn1-yn0;

xm2=d2*xm1-xm0;

ym2=d2*ym1-ym0;

x=yn2+ym2;

y=-xn2+xm2;

drawpixel (int(x+0.5), int(y+0.5),color);

xn0=xn1;

yn0=yn1;

xn1=xn2;

yn1=yn2;

xm0=xm1;

ym0=ym1;

xm1=xm2;

ym1=ym2;

}

} /*Stancu*/

xn0,xn1,xn2對應(yīng)f(n),f(n+1)和f(n+2);yn0,yn1,yn2對應(yīng)g(n),g(n+1)和g(n+2)。xm0,xm1,xm2對應(yīng)f1(n),f1(n+1)和f1(n+2);ym0,ym1,ym2對應(yīng)g1(n),g1(n+1)和g1(n+2)。

4 運行結(jié)果

用VB6.0編寫程序得到輸出如圖2,其中從左到右k分別取值2、3和4。選取不同的k可得到各種美觀的圖形。

5 算法分析

算法速度取決于取點數(shù)的多少和計算每個點的計算量。初始化后,計算每對繪圖點需要4次乘法運算。計算m個繪圖點需要4m次乘法運算。

6 結(jié)束語

本文給出的普通旋輪線和玫瑰線的逐點生成算法,已經(jīng)編寫程序并進行了驗證。算法中乘法次數(shù)較少,且通過構(gòu)造遞推公式的方法避免了大量的三角函數(shù)運算,因此運算速度快。遞推公式構(gòu)造簡單、規(guī)律性強,很容易編寫程序?qū)崿F(xiàn)。按照此方法也可構(gòu)造出圓和心臟線等圖形的生成算法。

本文的研究對于基于角度的圖形繪制算法研究具有參考意義。

參考文獻:

[1] 孫家廣等.計算機圖形學(xué)[M].清華大學(xué)出版社,1998.

[2] 李星秀,康寶生.玫瑰線和普通旋輪線的逐點生成算法[J].計算機工

程與設(shè)計,2006.3:746-748

[3] 林芳.心臟線的逐點生成算法[J].寧夏大學(xué)學(xué)報,2006.3:25-26

[4] 劉勇奎.直線與曲線的逐點生成算法[J].工程圖學(xué)學(xué)報,2005.6:

41-50

[5] 張博.圓的高質(zhì)量、快速生成算法[J].計算機應(yīng)用與軟件,1994.2:

51-55

[6] 張志剛,周明全.一種輪廓曲線的多邊形近似算法[J].計算機應(yīng)用,

2006.3:577-578

[7] 張博等.中點生成橢圓的整數(shù)型算法[J].工程圖學(xué)學(xué)報,2011.1:1-4

[8] 王棟.Visual Basic程序設(shè)計[M].清華大學(xué)出版社,2002.

[9] 嚴偉敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].清華大學(xué)出版社,1997.

主站蜘蛛池模板: 亚洲第一中文字幕| 波多野吉衣一区二区三区av| 精品久久高清| 日本妇乱子伦视频| 尤物国产在线| 国产综合亚洲欧洲区精品无码| 精品福利网| 国产aaaaa一级毛片| 欧美人在线一区二区三区| 国产精品不卡永久免费| 韩日无码在线不卡| 欧洲欧美人成免费全部视频| 熟女视频91| 国产在线专区| 好吊色妇女免费视频免费| 国产欧美精品一区二区| 永久免费av网站可以直接看的| 看看一级毛片| 国产日韩AV高潮在线| 超级碰免费视频91| 国产欧美视频综合二区| 国产乱子伦视频三区| 久久国产亚洲偷自| 日韩欧美国产成人| 日韩欧美中文字幕在线精品| 2021国产精品自拍| 国产精品永久在线| 精品国产免费人成在线观看| 青青操视频在线| 91视频青青草| 国产欧美综合在线观看第七页| 成人在线天堂| 国产第二十一页| 伊人大杳蕉中文无码| 女人18一级毛片免费观看| 色国产视频| 精品人妻无码区在线视频| 91精品免费久久久| 2020亚洲精品无码| 国产人碰人摸人爱免费视频| 美女视频黄频a免费高清不卡| 热热久久狠狠偷偷色男同| 国产成人毛片| 呦女亚洲一区精品| 精品黑人一区二区三区| 四虎永久免费地址在线网站| 亚洲天堂视频在线观看| 激情综合图区| 免费女人18毛片a级毛片视频| 91青青草视频在线观看的| 成人另类稀缺在线观看| 天天操天天噜| 国产男女免费视频| 国产在线精彩视频二区| 精品一区二区无码av| 国产一区二区免费播放| 亚洲国产精品不卡在线| 日本免费a视频| 粗大猛烈进出高潮视频无码| 国产一级视频久久| 色亚洲成人| 在线亚洲小视频| 极品av一区二区| 97se亚洲综合不卡| 激情综合激情| 国产无码高清视频不卡| 真实国产乱子伦高清| 欧美性久久久久| 亚洲成人手机在线| 欧美日韩导航| 综合色区亚洲熟妇在线| 久久国语对白| 色九九视频| 亚洲精品无码专区在线观看| 女人毛片a级大学毛片免费| 国产亚洲日韩av在线| 欧美精品在线视频观看| 四虎在线观看视频高清无码| 国内黄色精品| 不卡国产视频第一页| 2020最新国产精品视频| 国产乱肥老妇精品视频|