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

基于Bresenham算法圓弧的設計與算法分析

2021-07-13 10:17:08唐啟見湖南軟件職業學院
現代經濟信息 2021年18期
關鍵詞:區域

唐啟見 湖南軟件職業學院

一、圓的構建

圓形是在GUI設計過程中不可規避的重要圖形,可以通過確定“一點一線”來描述一個圓形,“一點”為圓心,“一線”為圓的半徑,圓心確定了圓的位置,半徑確定了圓的大小。圓形及圓弧的生成算法主要有數值微分法、Bresenham畫圓算法和中點畫線法等。

由于圓形是一個對稱的結構,不但左右對稱,而且中心對稱,所以利用Bresenham畫圓算法只需要繪制出圓的一段圓弧,然后通過對稱復制的方法即可實現整個圓的繪制。首先確定目標圓的圓心,然后以圓心為坐標原點建立對稱坐標系,如先繪制第一象限的1/8段圓弧(如圖1所示)。設最先確定的逼近像素點Pi-1的坐標為(xi-1,yi-1),那么在圓弧附近有兩個或者多個逼近像素點,如圖1中的Si(xi-1+1,yi-1)和Ti(xi-1+1,yi-1-1)點,在這兩個點的選擇時需要計算這兩個點離理論圓弧的距離,選擇離理論圓弧比較近的那個點作為圓弧構建的下一個像素點,以此類推,可以形成一段1/8段圓弧。下面來討論一下Si點和Ti點到理論圓弧的距離,設Si點和Ti點到理論圓弧的距離分別為D(Si)、D(Ti),計算公式如下:

圖1 Bresenham算法構建1/8段圓弧

因為Si點和Ti點的坐標分別為(xi-1+1,yi-1)、(xi-1+1,yi-1-1),那么Si點和Ti點分別離坐標原點即圓心的距離的平方分別為:(xi-1+1)2+yi-12、(xi-1+1)2+(yi-1-1)2,將它們與圓的半徑的平方做差就可以得出Si點和Ti點離理論圓弧的距離大小了。假設Si點在圓弧的外部,Ti點在圓弧的內部。

D(Si)=[(xi-1+1)2+yi-12]-R2

D(Ti)=R2-[(xi-1+1)2+(yi-1-1)2]

令di=D(Si)-D(Ti),如果di>0,說明Ti點比Si點更靠近理論圓弧,即選擇Ti點更合適;反之選擇Si點。

di=D(Si)-D(Ti)=[(xi-1+1)2+yi-12]-2R2+[(xi-1+1)2+(yi-1-1)2] (1)

將i+1代入(1)式中,得:

di+1=[(xi+1)2+yi2]-2R2+[(xi+1)2+(yi-1)2]

將di+1-di,得:

di+1-di=2[(xi+1)2-(xi-1+1)2]+(yi2-yi-12)+(yi-1)2-(yi-1-1)2

如果di≥0,則選擇Ti點,即:

xi=xi-1+1,yi=yi-1-1,di+1=di+4(xi-1-yi-1)+10

若di<0,則選擇Si點,即:

xi=xi-1+1,yi=yi-1,di+1=di+4xi-1+6

以此類推,可通過計算di和di+1來對Si和Ti進行取舍。將i=1、x0=0、y0=R代入式(1)中:

d1=3-2R

通過上述討論可通過Bresenham畫圓算法得到第一象限的1/8圓弧,再通過對稱復制的方法即可創建整個圓形。

二、橢圓的構建

橢圓與圓的形狀的相似性,決定了它們的算法具有一定的相似性。橢圓也是一個對稱結構的圖形,由于橢圓的對稱性相對于圓形的對稱性來說有一定的局限性,所以需要把橢圓的在一個象限的1/4段圓弧構建出來,然后再用對稱復制的方法形成整個橢圓。首先將坐標原點設為橢圓的中心點,x軸方向的半徑設為a,y軸方向的半徑設為b,橢圓上的點如下關系:

隱式方程式為:

選取第一象限的1/4段橢圓弧來進行討論,如圖2所示,N為橢圓弧上的某個點,N左邊的點在區域-1,N右邊的點在區域2,設N點的斜率為-1,那么區域1的點的斜率大于-1,區域2的點的斜率小于-1。

圖2 Bresenham算法構建橢圓弧(一)

通過上述分析,以N點為界分為區域1和區域2兩個區域,在區域1中,x增長速度比y減小的速度要快,所以選取x軸為基軸進行討論,反之在區域2中,x增長速度比y減小的速度要慢,所以選取y軸為基軸進行討論。無論是在區域1作圖時隨著x的不斷加1,y是否作減1?還是在區域2作圖時隨著y的不斷減1,x是否作加1?都需要通過計算來決定。若在區域1作圖時,每確定一點后都需要判斷是否到達N點。如果到達N點,就需要轉換到區域2進行作圖。由式(2)得:

對式(3)進行求導:

dy/dx=-(b2·x)/(a2y)

如果斜率大于-1(區域1),則有:

b2x<a2y

根據Bresenham算法的基本思想進行討論,首先建立對稱坐標系,把坐標原點定為橢圓中心點。設Pi-1點為已確定的逼近像素點,坐標為(xi-1,yi-1),Pi-1點有兩個靠近點Si點和Ti點,它們的坐標分別為:(xi-1+1,yi-1)、(xi-1+1,yi-1-1)。下面來分析討論這兩個點哪一個更靠近理論橢圓弧,然后選擇更靠近的那個點作為橢圓弧的逼近像素點。設Si點和Ti點離橢圓弧的距離分別為D(Si)和D(Ti),則有:

令di=D(Si)-D(Ti),如果di≥0,則選擇Ti點作為橢圓弧的逼近像素點;反之則選擇Si點。

用i+1替代式(4)中的i,得:

將di+1-di,即可得到:

若di≥0,則選擇Ti點,此時有:

若di<0,則選擇Si點,此時有:

同理,將di的初始值為d1,代入式(4)得:

下面來討論在區域2作圖時的情況。如圖3所示,設Pi-1點為已確定的逼近像素點,坐標為(xi-1,yi-1),Pi-1點有兩個靠近點Si點和Ti點,坐標分別為:(xi-1+1,yi-1)、(xi-1+1,yi-1-1)。同理,設Si點和Ti點離橢圓弧的距離分別為D(Si)和D(Ti),則有:

圖3 Bresenham算法構建橢圓弧(二)

D(Si)=b2·(xi-1+1)2+a2·(yi-1-1)2-a2·b2

D(Ti)=a2·b2-b2·xi-12-a2·(yi-1-1)2

根據式(2)同理可知,選擇D(Si)和D(Ti)中更接近0的點即可。

用i+1代替式(5)中的i,得:

將di+1-di,可以得到:

若di≥0,選擇Ti點作為橢圓弧的逼近像素點:

若di<0,選擇Si點作為橢圓弧的逼近像素點:

三、結語

很多設計人員在LCD的GUI設計時面臨著算法的選擇,筆者也不例外,目前廣泛被大家接受的算法主要有數值微分法(DDA)、中點畫線法、Bresenham算法等,它們在不同圖形設計時各具特色,這就需要設計人員根據自己的專長與需要進行選擇。筆者在進行大量的實驗的基礎上認為Bresenham算法是一種具有高效性強、準確度高等特點的算法。上述分析有不到之處敬請指教。

猜你喜歡
區域
分割區域
探尋區域創新的密碼
科學(2020年5期)2020-11-26 08:19:22
基于BM3D的復雜紋理區域圖像去噪
軟件(2020年3期)2020-04-20 01:45:18
小區域、大發展
商周刊(2018年15期)2018-07-27 01:41:20
論“戎”的活動區域
敦煌學輯刊(2018年1期)2018-07-09 05:46:42
區域發展篇
區域經濟
關于四色猜想
分區域
公司治理與技術創新:分區域比較
主站蜘蛛池模板: 婷婷六月综合| 亚洲综合精品第一页| 欧美成人影院亚洲综合图| 美女无遮挡免费网站| 欧美在线视频不卡第一页| 久久国产毛片| 一级毛片网| 成人福利在线观看| 亚洲区第一页| 在线免费无码视频| 在线观看国产小视频| 狠狠做深爱婷婷久久一区| 欧美啪啪网| 99精品久久精品| 99999久久久久久亚洲| 亚洲综合第一页| 欧美精品影院| 国产微拍精品| 男人天堂亚洲天堂| 九九久久精品免费观看| 亚洲国产成人无码AV在线影院L| 欧美日韩国产成人高清视频| av手机版在线播放| 黄色网站在线观看无码| 国产丰满成熟女性性满足视频| 久久综合伊人 六十路| 欧美成人精品高清在线下载| 97狠狠操| 国产精品美女自慰喷水| 亚洲成人www| 国产高颜值露脸在线观看| 国产三级视频网站| аⅴ资源中文在线天堂| 日本高清在线看免费观看| 亚洲中文精品久久久久久不卡| 国产青青操| 国产一级一级毛片永久| 国产福利在线免费观看| 欧美色香蕉| 国产主播一区二区三区| 日韩欧美综合在线制服| 亚洲精品无码av中文字幕| 亚洲成在人线av品善网好看| 国产免费精彩视频| 精品福利视频导航| 日本手机在线视频| 日本精品一在线观看视频| 亚洲综合18p| 免费看黄片一区二区三区| 亚洲视频免| 伊人色在线视频| 先锋资源久久| 国产aⅴ无码专区亚洲av综合网| 一级爱做片免费观看久久| 91丝袜美腿高跟国产极品老师| 在线国产欧美| 国产99在线观看| 欧美午夜视频| 无码国产伊人| 亚洲一区二区三区国产精华液| 一本一道波多野结衣一区二区 | 色丁丁毛片在线观看| 久久精品丝袜| 亚洲系列无码专区偷窥无码| 日本三级欧美三级| 高清无码手机在线观看| 国产欧美日韩另类精彩视频| 日本成人精品视频| Jizz国产色系免费| 91久久夜色精品国产网站 | a天堂视频在线| 成人午夜福利视频| 日本91视频| 动漫精品啪啪一区二区三区| 都市激情亚洲综合久久| 原味小视频在线www国产| 久久久久人妻精品一区三寸蜜桃| 91精品免费高清在线| 日韩AV无码一区| 亚洲中文字幕精品| 亚洲AV人人澡人人双人| 伊人久久青草青青综合|