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

正多邊形和心臟線生成算法

2021-02-28 11:53:54張博
電腦知識與技術(shù) 2021年35期

摘要:對于正多邊形和心臟線圖形的生成,本文給出了新的遞推公式,并以該公式為基礎(chǔ)構(gòu)造了正多邊形和心臟線的生成算法;該算法在等分角度的設(shè)定下,計(jì)算正多邊形每對頂點(diǎn)需要2次乘法運(yùn)算,計(jì)算心臟線每對點(diǎn)需要4次乘法運(yùn)算,算法避免了大量的三角函數(shù)運(yùn)算因而效率較高。用VB編寫程序?qū)λ惴ㄟM(jìn)行了驗(yàn)證,算法具有一定的實(shí)用價(jià)值。

關(guān)鍵詞:正多邊形;心臟線;構(gòu)造;算法;遞推公式

中圖分類號:TP391 ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2021)35-0127-02

1 正多邊形算法設(shè)計(jì)

1.1 正多邊形算法遞推公式的構(gòu)造

r為正多邊形外接圓半徑,圓心與直角坐標(biāo)系下的原點(diǎn)[o]重合。假設(shè)把圓周角[m]等份,每份對應(yīng)的角度[θ=2π/m]。沿[x]軸的正方向逆時(shí)針方向順次在圓上取點(diǎn),相鄰兩點(diǎn)圓弧對應(yīng)的圓心角為[θ]。初始時(shí),取[x0=0,y0=r;] [x1=rcos(θ),] [y1=rsin(θ)]。

[xn=rcos(nθ)]

[yn=rsin(nθ)]

根據(jù)前面兩對點(diǎn)的坐標(biāo)值,可推導(dǎo)出新的一個(gè)點(diǎn)的坐標(biāo)。下面推出遞推公式:

[xn+2=rcos((n+2)θ)] ? ?[=rcos((n+1)θ)cos(θ)-rsin((n+1)θ)sin(θ)=2rcos(θ)cos((n+1)θ)-r(cos((n+1)θ)cos(θ)+sin((n+1)θ)sin(θ)=2rcos(θ)cos((n+1)θ)-rcos(nθ)=2cos(θ)xn+1-xn]

[yn+2=rsin((n+2)θ)] ? ?[=rsin((n+1)θ)cos(θ)+rcos((n+1)θ)sin(θ)=2rcos(θ)sin((n+1)θ)-r(sin((n+1)θ)cos(θ)-cos((n+1)θ)sin(θ))=2rcos(θ)sin((n+1)θ)-rsin(nθ)=2cos(θ)yn+1-yn]

r為正多邊形外接圓半徑,m為多邊形的邊數(shù),color為生成多邊形所用的顏色。t為每一條邊對應(yīng)圓心角值。初始化后每次循環(huán)生成一對點(diǎn)畫一條線,直到執(zhí)行m-1次循環(huán)。

1.2 正多邊形的生成算法

Pcreat(r,m,color)

int r,m,color;

{

int i,cx,cy;

float xn0,yn0,xn1,yn1,xn2,yn2,pi,t,d;

pi=3.1415927; ? ? ? ? ? ? ? ? ? ?/*pi是圓周率*/

t=2*pi/m;

d=2*cos(t); ? ? ? ? ? ? ? ? ? ? ?/*t為上面遞推公式中的等分角度*/

xn0=0; ? ? ? ? ? ? ? ? ?   ? ? /*(xn0,yn0),第1對起始點(diǎn)初始化*/

yn0=r;

xn1=r*cos(t); ? ? ? ? ? ? ? ? ? ?/*(xn1,yn1),第2對起始點(diǎn)初始化*/

yn1=r*sin(t);

line (xn0,yn0)-(xn1,yn1),color; ? ? ?/*兩對起始點(diǎn)以color顏色畫線*/

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

{

xn2=d*xn1-xn0; ? ? ? ? ? ? ? ? /*計(jì)算新的一對坐標(biāo)(xn2,yn2)*/

yn2=d*yn1-yn0;

Line (xn2,yn2)-(xn1,yn1),color; ? ? /*兩對點(diǎn)以color顏色畫線*/

xn0=xn1;

yn0=yn1;

xn1=xn2;

yn1=yn2;

}

}/*pcreat*/

1.3 正多邊形應(yīng)用實(shí)例輸出

用VB6.0編寫程序得到圖1。

1.4 正多邊形算法分析

算法速度主要取決于正多邊形的邊數(shù)(m)和計(jì)算每對點(diǎn)的計(jì)算量。初始化后,計(jì)算每對繪圖點(diǎn)需要2次乘法運(yùn)算。計(jì)算m個(gè)繪圖點(diǎn)需要2m次乘法運(yùn)算。

2 心臟線算法設(shè)計(jì)

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

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

[x=acosθ(1+cosθ))y=asinθ(1+cosθ),θ∈0,2π]

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

變換上式可得:

[x=acosθ+a2·cos2θ+a2y=asinθ+a2·sin2θ]

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

為表達(dá)遞推公式方便,令[f(n)=acos(n?t),g(n)=asin(n?t),]其中0≤n≤m。[f1(n)=a2·cos(n?2t),g1(n)=a2·sin(n?2t),]其中0≤n≤m。

采用與正多邊類似的構(gòu)造方法,可構(gòu)造出心臟線算法。

2.2 心臟線生成算法

Stancu (a,m,color)

int a, m, color;

{

int i;

float xn1, xn2, yn1, yn2, xm1, xm2, ym1, ym2 ;

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

pi = 3.14159;

cx = 800.5;

cy = 1500.5;

a = 1000;

m = 1000;

t = 2 * pi / m;

t2 = 2 * t;

u = a / 2;

d = 2 * Cos(t);

d2 = 2 * Cos(t2);

xn0 = a * Cos(0);

yn0 = a * Sin(0);

xm0 = a / 2 * Cos(0);

ym0 = a / 2 * Sin(0);

x = xn0 + xm0 + u; ? ? ? ? ? ? /*(x,y),第1對起始點(diǎn)初始化*/

y = yn0 + ym0;

drawpixel ( int(x), int(y),color); ? /*顯示第1個(gè)點(diǎn)*/

xn1 = a * Cos(t);

yn1 = a * Sin(t);

xm1 = a / 2 * Cos(t2);

ym1 = a / 2 * Sin(t2);

x = xn1 + xm1 + u; ? ? ? ? ? ? /*第2對起始點(diǎn)初始化*/

y = yn1 + ym1;

drawpixel ( int(x), int(y),color); ? /*顯示第2個(gè)點(diǎn)*/

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

xn2 = d * xn1 - xn0; ? ? ? ? ? /*計(jì)算新的點(diǎn)*/

yn2 = d * yn1 - yn0;

xm2 = d2 * xm1 - xm0;

ym2 = d2 * ym1 - ym0;

x = xn2 + xm2 + u;

y = yn2 + ym2;

drawpixel ( int(x), int(y),color); ? /*顯示新的點(diǎn)*/

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);yn0,yn1,yn2對應(yīng)g1(n),g1(n+1)和g1(n+2)。

2.3 心臟線應(yīng)用實(shí)例輸出

用VB6.0編寫程序得到圖2的輸出,其中,a=1000,m=1500。

2.4 心臟線算法分析

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

3 結(jié)束語

本文給出了正多邊形和心臟線的逐點(diǎn)生成算法,并且已經(jīng)編寫了程序進(jìn)行了驗(yàn)證。算法具有構(gòu)造簡單,執(zhí)行速度較快的特點(diǎn)。通過構(gòu)造遞推公式的方法避免了大量的三角函數(shù)運(yùn)算,算法中乘法運(yùn)算次數(shù)也較少,因此算法效率較高。遞推公式的構(gòu)造方法也可以應(yīng)用于類似的其他問題中,對于基于角度的圖像繪制算法的研究具有參考意義。

參考文獻(xiàn):

[1] 李星秀,康寶生.玫瑰線和普通旋輪線的逐點(diǎn)生成算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(5):746-748.

[2] 劉勇奎.直線與曲線的逐點(diǎn)生成算法[J].工程圖學(xué)學(xué)報(bào),2005,26(6):41-51.

[3] 張博.圓的高質(zhì)量、快速生成算法[J].計(jì)算機(jī)應(yīng)用與軟件,1994,11(2):51-56.

[4] 譚浩強(qiáng).Visual Basic程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.

[5] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu):C語言版[M].北京:清華大學(xué)出版社,1997.

[6] 張博.普通旋輪線和玫瑰線的逐點(diǎn)生成新算法[J].計(jì)算機(jī)時(shí)代,2014(9):54-56.

【通聯(lián)編輯:梁書】

主站蜘蛛池模板: 性视频久久| 精品视频一区在线观看| 99免费视频观看| 欧美一级黄色影院| 亚洲精品成人7777在线观看| 91在线日韩在线播放| 在线播放真实国产乱子伦| 国产一级二级在线观看| 精品自窥自偷在线看| 日韩a级片视频| 成人精品视频一区二区在线| 日韩无码黄色网站| 国产欧美视频在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ | jizz国产视频| 亚洲色婷婷一区二区| 国产性生大片免费观看性欧美| 人人看人人鲁狠狠高清| 最新无码专区超级碰碰碰| www.av男人.com| 免费人成又黄又爽的视频网站| 国产免费久久精品99re不卡| 2020国产免费久久精品99| 九九热精品在线视频| 国产成人综合网| 99精品免费在线| 亚洲av无码成人专区| 热伊人99re久久精品最新地| 免费国产在线精品一区| 激情国产精品一区| 欧美精品成人| 国产欧美日韩综合在线第一| 国产精品亚洲精品爽爽| 日本三区视频| 国产一区二区三区在线观看免费| 亚洲性一区| 精品久久高清| 国产99在线| 精品成人一区二区三区电影| 在线播放真实国产乱子伦| 亚洲人成网18禁| 久久精品女人天堂aaa| 国产91透明丝袜美腿在线| 91香蕉国产亚洲一二三区| 新SSS无码手机在线观看| 欧美第一页在线| 爱色欧美亚洲综合图区| 亚洲婷婷在线视频| 亚洲午夜久久久精品电影院| 免费Aⅴ片在线观看蜜芽Tⅴ | 亚洲V日韩V无码一区二区| 黄色污网站在线观看| 手机在线看片不卡中文字幕| 国产人成午夜免费看| 人人91人人澡人人妻人人爽| 亚洲一区网站| 欧美日韩中文字幕二区三区| 亚洲一区二区约美女探花| 亚洲视频欧美不卡| 亚洲A∨无码精品午夜在线观看| 99er精品视频| 一区二区三区成人| 欧美日韩资源| 国产产在线精品亚洲aavv| 亚洲最大综合网| 国产91特黄特色A级毛片| 国产视频一区二区在线观看 | 性视频久久| 国产精品任我爽爆在线播放6080 | 在线看AV天堂| 日本欧美一二三区色视频| 一级毛片免费不卡在线| 欧美成人日韩| 经典三级久久| 午夜日韩久久影院| 欧美啪啪网| 亚洲最猛黑人xxxx黑人猛交| 99精品热视频这里只有精品7| 亚洲美女一级毛片| 欧美精品亚洲二区| 伊人久久婷婷五月综合97色| 日韩一级毛一欧美一国产|