• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于游戲中區(qū)域檢測(cè)碰撞的改進(jìn)措施

    2014-04-29 00:00:00萬(wàn)夢(mèng)玉張夢(mèng)琪

    摘 要:該文改進(jìn)了傳統(tǒng)的區(qū)域檢測(cè)碰撞算法不能檢測(cè)處于不同高度的運(yùn)動(dòng)小球是否發(fā)生碰撞的狀況,通過比較兩球圓心距與其半徑和的大小,分析并設(shè)計(jì)實(shí)驗(yàn)來(lái)檢測(cè)兩球在不同高度上是否發(fā)生碰撞,但由于采集圖片的問題以及球的半徑不夠精確,會(huì)出現(xiàn)兩球并未真正發(fā)生碰撞卻檢測(cè)出碰撞的結(jié)果。實(shí)驗(yàn)最終可以

    檢測(cè)兩運(yùn)動(dòng)小球在不同高度上是否發(fā)生碰撞。

    關(guān)鍵詞:區(qū)域碰撞;高度

    中圖分類號(hào):TP312.1-4

    在簡(jiǎn)單的游戲設(shè)計(jì)中,我們總會(huì)不可避免的使用到球類物體,在對(duì)兩個(gè)運(yùn)動(dòng)小球做區(qū)域檢測(cè)碰撞時(shí),由于傳統(tǒng)的區(qū)域檢測(cè)只能檢測(cè)到兩個(gè)小球在相同高度上是否發(fā)生碰撞,即判斷兩個(gè)小球圖片長(zhǎng)度是否已經(jīng)相交,若相交,則說明發(fā)生了碰撞。但是,當(dāng)小球處于不同高度時(shí),運(yùn)用該方法則會(huì)產(chǎn)生錯(cuò)誤。

    基于上訴問題,本文設(shè)計(jì)了檢測(cè)不同高度的小球在發(fā)生碰撞時(shí)的算法。即通過比較兩球圓心距與其半徑和的大小,當(dāng)圓心距小于半徑和時(shí)即檢測(cè)為碰撞,從而克服了區(qū)域檢測(cè)碰撞中的高度限制,而且實(shí)驗(yàn)中實(shí)現(xiàn)了多次檢測(cè)碰撞,即兩球球心連線與水平線成不同角度時(shí)分別檢測(cè)碰撞結(jié)果,使得碰撞檢測(cè)更為全面。

    1 數(shù)學(xué)模型

    如圖1、圖2所示,傳統(tǒng)的區(qū)域檢測(cè)中,兩個(gè)小球處于同一高度,對(duì)其檢測(cè)碰撞,只需判斷圖片長(zhǎng)度是否已經(jīng)相交。換言之,僅僅判斷左邊小球圖片的左上角的x坐標(biāo)與左邊小球的圖片長(zhǎng)度是否大于右邊小球圖片的左上角的x坐標(biāo)即可。若大于,表示兩球發(fā)生碰撞,反之未發(fā)生碰撞。

    上述數(shù)學(xué)模型只能檢測(cè)到水平線上發(fā)生的碰撞,為了使碰撞檢測(cè)更全面,設(shè)計(jì)了以下數(shù)學(xué)模型。如圖3、圖4,通過比較兩球的圓心距與其半徑和的大小來(lái)作為其是否發(fā)生碰撞的標(biāo)準(zhǔn),換言之,假設(shè)兩球中一球圓心坐標(biāo)為(x,y),另一球圓心坐標(biāo)為(m,n),且其半徑大小均為r,p,則當(dāng)其球心距小于其半徑和時(shí),則檢測(cè)為碰撞,以下為其圖片及具體公式:

    2 檢測(cè)結(jié)果及分析

    本實(shí)驗(yàn)刻畫了兩個(gè)小球,球A垂直方向做勻速運(yùn)動(dòng),水平方向上以每次50單位的速度向右移動(dòng),球B沿對(duì)角線方向從左向右運(yùn)動(dòng),這樣保證了兩球一定能夠發(fā)生碰撞,一旦兩球球心距小于其半徑和時(shí)即檢測(cè)為碰撞,當(dāng)兩球發(fā)生碰撞后,靜止兩秒,繼續(xù)按照原來(lái)的運(yùn)動(dòng)軌跡運(yùn)行,當(dāng)A球超出右邊邊界時(shí)實(shí)驗(yàn)結(jié)束,這樣設(shè)計(jì)是為了可以多次檢測(cè)到不同方位的碰撞。如圖5、圖6所示,小球在運(yùn)動(dòng)過程中均能檢測(cè)出碰撞。

    為了消除隨機(jī)性,圖7、圖8顯示了兩個(gè)小球在垂直方位和斜對(duì)角方位也檢測(cè)到碰撞,從而證明該算法可以檢測(cè)到兩球在不同位置發(fā)生碰撞的過程。

    以下為兩球處于不同位置時(shí)發(fā)生碰撞的圖片

    圖5 檢測(cè)碰撞 圖6 檢測(cè)碰撞

    圖7 檢測(cè)碰撞 圖8 檢測(cè)碰撞

    在整個(gè)過程中,由于圖片采集以及球的半徑不夠精確的原因,可能會(huì)出現(xiàn)兩球并未相撞但檢測(cè)為碰撞的情形,如下:

    圖9 發(fā)生不精確的檢測(cè)

    3 結(jié)束語(yǔ)

    本文通過比較兩球圓心距與其半徑和的大小,分析并設(shè)計(jì)實(shí)驗(yàn)來(lái)檢測(cè)兩球在不同高度上是否發(fā)生碰撞,解決了區(qū)域檢測(cè)碰撞不能實(shí)現(xiàn)檢測(cè)運(yùn)動(dòng)小球在不同高度上是否發(fā)生碰撞的情況,使得檢測(cè)更加靈活。

    但是,該實(shí)驗(yàn)暫且只適合于規(guī)則形狀、取得其范圍大小的球類物體,但是經(jīng)常會(huì)遇到不規(guī)則的圖形,為了節(jié)約碰撞檢測(cè)的時(shí)間,若在允許范圍內(nèi)仍采用區(qū)域檢測(cè)碰撞。

    參考文獻(xiàn):

    [1]肖永亮.Visual C++游戲編程基礎(chǔ)[M].北京:電子工業(yè)出版社,2005.

    [2]范昭煒.實(shí)時(shí)碰撞檢測(cè)技術(shù)研究[D].浙江大學(xué),2003.

    [3]肖永亮.計(jì)算機(jī)游戲程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2005.

    [4]葉展,葉丁.游戲的設(shè)計(jì)與開發(fā)[M].北京:人民交通出版社,2003.

    [5]鮑虎軍,金小剛,彭群生.計(jì)算機(jī)動(dòng)畫算法基礎(chǔ)[M].北京:科學(xué)出版社,2000.

    [6]Addrew Rollings,Dave Morris.Game Architecture and Design.the Coriolis Group,2000.

    [7]Charles Petzold.Programming Windows.Microsoft,1998.

    [8]Jim Blinn,Jim Blinn’s Corner.A Trip Down the Graphics Pipeline.Morgan-Kaufmann,1996.

    [9]Direct X 9.0 SDK.Microdift Cooperation,2003.

    [10]Daniel Sanchez-Crespo Dalmau.Core Techniquesn and Algorithms in Game Programming.New Riders Publishing,2003.

    作者簡(jiǎn)介:萬(wàn)夢(mèng)玉(1991-),女,山東泰安人,本科;張夢(mèng)琪(1993-),女,四川成都人,本科。

    作者單位:四川大學(xué) 軟件學(xué)院,成都 610207

    田阳县| 随州市| 东安县| 桐庐县| 乐清市| 肃宁县| 司法| 长葛市| 鹤山市| 明水县| 泗阳县| 蒲城县| 苍溪县| 台安县| 大同县| 平江县| 南丰县| 连南| 方城县| 武定县| 连州市| 马关县| 屏南县| 衡南县| 通化县| 余干县| 明星| 大名县| 冷水江市| 犍为县| 济源市| 菏泽市| 武定县| 清流县| 贵定县| 泸溪县| 乐山市| 闽清县| 遂宁市| 哈尔滨市| 壤塘县|