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 文獻標(biāo)志碼:A 文章編號:1006-8228(2014)09-54-03

0 引言

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

文獻[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)造

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

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

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

為表達(dá)遞推公式方便,令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為要顯示點的橫縱坐標(biāo)值。

2.3 運行結(jié)果

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

2.4 算法分析

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

3 玫瑰線

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

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

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

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

變換上式可得:

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

為表達(dá)遞推公式,令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)造表達(dá)式與普通螺旋線采用的方法相同。

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; /*極坐標(biāo)方程中的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] 嚴(yán)偉敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].清華大學(xué)出版社,1997.

主站蜘蛛池模板: 国产微拍一区二区三区四区| 国产成人久久综合777777麻豆| 亚洲视频色图| 国产色伊人| 免费jizz在线播放| 麻豆国产原创视频在线播放 | 国产jizzjizz视频| 亚洲成人精品在线| 国产成人永久免费视频| 精品小视频在线观看| 国产日本一区二区三区| 99久久精彩视频| 91久久精品日日躁夜夜躁欧美| 国产本道久久一区二区三区| 婷婷亚洲综合五月天在线| 国产午夜人做人免费视频| 一级毛片免费观看久| 老汉色老汉首页a亚洲| 亚洲第一视频网| 九九线精品视频在线观看| 精品亚洲国产成人AV| 成人国产一区二区三区| 国产熟女一级毛片| 亚洲色成人www在线观看| 91亚洲精选| 国产一级α片| 欧美日韩北条麻妃一区二区| 亚洲综合九九| 国产91小视频在线观看| 欧美a级完整在线观看| 国产精品v欧美| 日本亚洲欧美在线| 国产日韩欧美黄色片免费观看| 四虎综合网| 一区二区影院| 欧美日韩成人| 五月婷婷综合网| 91娇喘视频| 婷婷色婷婷| 成人蜜桃网| 国产一区二区丝袜高跟鞋| 天天做天天爱夜夜爽毛片毛片| 永久免费无码成人网站| 日本亚洲成高清一区二区三区| 亚洲欧洲日本在线| 国产日产欧美精品| 69视频国产| www.91中文字幕| 亚洲性视频网站| 日韩中文字幕免费在线观看| 热久久这里是精品6免费观看| 一级毛片免费观看久| 午夜福利免费视频| 亚洲中文字幕97久久精品少妇| 中文字幕佐山爱一区二区免费| 亚洲欧洲免费视频| 亚洲成人一区二区三区| 国产呦视频免费视频在线观看 | 深爱婷婷激情网| 国产区在线观看视频| 欧美中文一区| 国产精品久久久久久久久久久久| 2021亚洲精品不卡a| 欧美亚洲一区二区三区导航 | 国产在线自在拍91精品黑人| 三级视频中文字幕| 素人激情视频福利| 亚洲欧美日韩天堂| 毛片最新网址| 国产91高清视频| 亚洲男女在线| 国产精品综合久久久| 国产精品一区在线麻豆| 国产理论一区| www.91在线播放| 在线国产毛片| 国产理论一区| 亚洲一区二区三区在线视频| 九色国产在线| 91青青草视频在线观看的| 国产专区综合另类日韩一区| 在线国产毛片|