本發(fā)明涉及數(shù)據(jù)分析領(lǐng)域,尤其涉及一種碰撞檢測方法及系統(tǒng)。
背景技術(shù):
針對在web端,由于DOM結(jié)構(gòu)中的圖片都是矩形,即使是不規(guī)則的圖片,放在DOM結(jié)構(gòu)里也是矩形;對矩形所包含的對象進(jìn)行碰撞檢測,一般會(huì)采用縮小檢測范圍的方式,并在對象局部綁定一個(gè)或者多個(gè)規(guī)則圖形的碰撞檢測區(qū),盡量讓最終效果看起來更真實(shí),通常把這種檢測區(qū)稱之為:內(nèi)測盒子,但是該方法效率很低,步驟也非常繁瑣,并且檢測結(jié)果準(zhǔn)確性較低。
申請?zhí)枮椋?01210144554.X的中國專利公開了一種網(wǎng)絡(luò)游戲中基于四叉樹的場景管理方法,該方法包括:在任一所述場景中建立坐標(biāo)系,任一分割所述場景的樹結(jié)點(diǎn)以其所在所述坐標(biāo)系中的坐標(biāo)標(biāo)識,并將所述場景中的各對象的對象ID與其所在的樹結(jié)點(diǎn)所對應(yīng)的坐標(biāo)綁定記錄;當(dāng)對所述場景中任一對象進(jìn)行碰撞檢測時(shí),根據(jù)所述對象的對象ID在當(dāng)前所述記錄中查找到的對應(yīng)的坐標(biāo)所對應(yīng)的樹結(jié)點(diǎn),并確定該樹結(jié)點(diǎn)及周圍八個(gè)樹結(jié)點(diǎn)中是否存在其他對象,如果是,確定存在與所述對象碰撞的對象;否則,確定不存在與所述對象碰撞的對象,但該方法通過八叉樹的方法去檢測,檢測過程中計(jì)算機(jī)內(nèi)存占用過大,存在碰撞檢測過程中的效率不高的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是:提供一種碰撞檢測方法及系統(tǒng),提高了DOM結(jié)構(gòu)中的對象碰撞檢測的效率。
為了解決上述技術(shù)問題,本發(fā)明提供了一種碰撞檢測方法,包括以下步驟:
S1:建立二維坐標(biāo)系;
S2:獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;
S3:若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
本發(fā)明還提供了一種碰撞檢測系統(tǒng),包括:
建立模塊,用于建立二維坐標(biāo)系;
計(jì)算模塊,用于獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;
判斷模塊,用于若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
本發(fā)明的有益效果:
本發(fā)明提供的一種碰撞檢測方法,所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象的像素點(diǎn)的Alpha值不為0,其背景區(qū)域的像素點(diǎn)的Alpha值均為0;通過獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合,若Alpha值對集合中存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象發(fā)生碰撞;上述方法只需檢測出Alpha值對集合中存在一Alpha值對均不為0,則停止檢測,在一定程度上提高了DOM結(jié)構(gòu)中對象碰撞檢測的效率;同時(shí)像素點(diǎn)的Alpha值進(jìn)行像素級的檢測,能夠提高碰撞檢測的準(zhǔn)確性。
附圖說明
圖1為根據(jù)本發(fā)明實(shí)施例的一種碰撞檢測方法的主要步驟示意圖;
圖2為根據(jù)本發(fā)明實(shí)施例一種碰撞檢測系統(tǒng)的結(jié)構(gòu)示意圖;
標(biāo)號說明:
1、建立模塊;2、計(jì)算模塊;3、判斷模塊。
具體實(shí)施方式
為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:通過獲取DOM中兩個(gè)的矩形結(jié)構(gòu)圖片具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合,若存在一Alpha值對的兩個(gè)Alpha值均不為0,則矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
請參照圖1,本發(fā)明提供的一種碰撞檢測方法,包括以下步驟:
S1:建立二維坐標(biāo)系;
S2:獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;
S3:若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
從上述描述可知,所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象的像素點(diǎn)的Alpha值不為0,其背景區(qū)域的像素點(diǎn)的Alpha值均為0;通過獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合,若Alpha值對集合中存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象發(fā)生碰撞;上述方法只需檢測出Alpha值對集合中存在一Alpha值對均不為0,則停止檢測,在一定程度上提高了DOM結(jié)構(gòu)中對象碰撞檢測的效率;同時(shí)像素點(diǎn)的Alpha值進(jìn)行像素級的檢測,能夠提高碰撞檢測的準(zhǔn)確性。
進(jìn)一步的,所述S1具體為:在HTML5的CANVAS畫布建立所述二維坐標(biāo)系。
從上述描述可知,在HTML5的CANVAS畫布處理圖片,能夠獲取圖片像素點(diǎn)的Alpha值,以像素級別進(jìn)行碰撞檢測,提高了碰撞檢測準(zhǔn)確性。
進(jìn)一步的,所述S2之前還包括:所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片的相對位置和尺寸不變地插入所述CANVAS畫布中。
從上述描述可知,通過CANVAS畫布對圖片的處理方法能夠檢測出DOM的矩形結(jié)構(gòu)圖片中所表示的對象是否發(fā)生碰撞,同時(shí)矩形結(jié)構(gòu)圖片的相對位置和尺寸在DOM和CANVAS畫布中是不變的,故所檢測出的結(jié)果測能夠準(zhǔn)確地反應(yīng)矩形結(jié)構(gòu)圖片所表示的對象的碰撞情況。
進(jìn)一步的,所述S2具體為:
通過所述HTML5的API接口獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成所述Alpha值對集合。
從上述描述可知,通過HTML5的API接口能夠快速準(zhǔn)確地提取CANVAS畫布中圖片的每一個(gè)像素點(diǎn)的Alpha值,提高像素點(diǎn)的Alpha值獲取速率。
進(jìn)一步的,所述S3具體為:
若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值邏輯與運(yùn)算的結(jié)果不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞;
若所述Alpha值對集合中,所有Alpha值對的兩個(gè)Alpha值邏輯與運(yùn)算的結(jié)果之和為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象沒有發(fā)生碰撞。
從上述描述可知,通過像素級別的計(jì)算,能夠提高矩形結(jié)構(gòu)圖片所表示的對象碰撞檢測的準(zhǔn)備性。
請參照圖2,本發(fā)明提供的一種碰撞檢測系統(tǒng),包括:
建立模塊1,用于建立二維坐標(biāo)系;
計(jì)算模塊2,用于獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;
判斷模塊3,用于若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
從上述描述可知,所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象的像素點(diǎn)的Alpha值不為0,其背景區(qū)域的像素點(diǎn)的Alpha值均為0;通過獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合,若Alpha值對集合中存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象發(fā)生碰撞;上述方法只需檢測出Alpha值對集合中存在一Alpha值對均不為0,則停止檢測,在一定程度上提高了DOM結(jié)構(gòu)中對象碰撞檢測的效率;同時(shí)利用像素點(diǎn)的Alpha值進(jìn)行像素級的檢測,能夠提高碰撞檢測的準(zhǔn)確性。
請參照圖1,本發(fā)明的實(shí)施例一為:
本發(fā)明提供的一種碰撞檢測方法,包括以下步驟:
在HTML5的CANVAS畫布建立所述二維坐標(biāo)系;
第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片的相對位置和尺寸不變地插入所述CANVAS畫布中;
通過所述HTML5的API接口獲取所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成所述Alpha值對集合;S3:若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞。
從上述描述可知,如果檢測出Alpha值對集合中存在一Alpha值對均不為0,則停止檢測,在一定程度上提高了DOM結(jié)構(gòu)中對象碰撞檢測的效率;同時(shí)像素點(diǎn)的Alpha值進(jìn)行像素級的檢測,能夠提高碰撞檢測的準(zhǔn)確性。
本發(fā)明的實(shí)施例二為:
在web游戲中,一個(gè)游戲人物在跑動(dòng)過程中,前面有一個(gè)不規(guī)則或規(guī)則的障礙物,這時(shí)候人物撞到了障礙物就不能穿透過去,那么人物和障礙物是否發(fā)生碰撞,檢測方法如下:通過在HTML5的CANVAS畫布建立二維坐標(biāo)系;獲取人物所在的第一DOM矩形結(jié)構(gòu)圖片和障礙物所在的第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則人物撞到了障礙物,這時(shí)人就不能穿越障礙物,否則會(huì)造成不同物體的干涉現(xiàn)象,影響游戲的體驗(yàn)。
本發(fā)明的實(shí)施例三為:
web應(yīng)用領(lǐng)域,在教育的學(xué)科工具磁感線模擬器,小磁針在拖動(dòng)時(shí),不能和磁體發(fā)生碰撞,一旦碰撞就能繼續(xù)移動(dòng)小磁針,小磁針也不能與小磁針發(fā)生碰撞,碰撞了若繼續(xù)移動(dòng)小磁針和磁體影響教學(xué)效果;那么小磁針與磁體之間是否碰撞,可以在HTML5的CANVAS畫布建立二維坐標(biāo)系,獲取小磁針?biāo)诘牡谝籇OM矩形結(jié)構(gòu)圖片和磁體所在的第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合;若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值均不為0,則小磁針與磁體發(fā)生碰撞。
請參照圖2,本發(fā)明的實(shí)施例四為:
本發(fā)明提供的碰撞檢測系統(tǒng),包括:
建立模塊1包括建立單元,所述建立單元,用于在HTML5的CANVAS畫布建立所述二維坐標(biāo)系;插入模塊,用于第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片的相對位置和尺寸不變地插入所述建立單元所建立的二維坐標(biāo)系中;計(jì)算模塊2包括計(jì)算單元,所述計(jì)算單元,用于通過所述HTML5的API接口獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成所述Alpha值對集合,并將所述Alpha值對集合傳輸給判斷模塊3;判斷模塊3包括第一判斷單元和第二判斷單元;所述第一判斷單元,用于若所述Alpha值對集合中,存在一Alpha值對的兩個(gè)Alpha值邏輯與運(yùn)算的結(jié)果不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象發(fā)生碰撞;所述第二判斷單元,用于若所述Alpha值對集合中,所有Alpha值對的兩個(gè)Alpha值邏輯與運(yùn)算的結(jié)果之和為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)圖片所表示的對象沒有發(fā)生碰撞。
綜上所述,本發(fā)明提供的一種碰撞檢測方法及系統(tǒng),所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象的像素點(diǎn)的Alpha值不為0,其背景區(qū)域的像素點(diǎn)的Alpha值均為0;通過獲取第一DOM矩形結(jié)構(gòu)圖片和第二DOM矩形結(jié)構(gòu)圖片中具有相同坐標(biāo)的像素點(diǎn)的Alpha值,形成Alpha值對集合,若Alpha值對集合中存在一Alpha值對的兩個(gè)Alpha值均不為0,則所述第一DOM矩形結(jié)構(gòu)圖片和所述第二DOM矩形結(jié)構(gòu)所表示的對象發(fā)生碰撞;上述方法只需檢測出Alpha值對集合中存在一Alpha值對均不為0,則停止檢測,在一定程序上提高了DOM結(jié)構(gòu)中對象碰撞檢測的效率;同時(shí)像素點(diǎn)的Alpha值進(jìn)行像素級的檢測,能夠提高碰撞檢測的準(zhǔn)確性。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。