国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

js隨手筆記-------理解JavaScript碰撞檢測(cè)算法核心簡(jiǎn)單實(shí)現(xiàn)原理

hikui / 3089人閱讀

摘要:通用算法概念模型圓形與矩形之間的碰撞核心理念通過(guò)找出矩形上離圓心最近的點(diǎn),然后通過(guò)判斷該點(diǎn)與圓心的距離是否小于圓的半徑,若小于則為碰撞。

碰撞檢測(cè)在前端游戲,設(shè)計(jì)拖拽的實(shí)用業(yè)務(wù)等領(lǐng)域的應(yīng)用場(chǎng)景非常廣泛,今天我們就在這里對(duì)于前端JavaScript如何實(shí)現(xiàn)碰撞檢測(cè)算法進(jìn)行一個(gè)原理上的探討,讓大家能夠明白如何實(shí)現(xiàn)碰撞以及碰撞的理念是什么:
1.矩形與矩形間的碰撞
核心理念
判斷任意兩個(gè)(無(wú)旋轉(zhuǎn))矩形的任意一邊是否無(wú)間距,從而判斷是否碰撞。大體實(shí)現(xiàn)方式就是以一個(gè)矩形的某個(gè)定點(diǎn)作為運(yùn)動(dòng)物,計(jì)算自己的坐上頂點(diǎn)與另一元素的左上定點(diǎn)的位置和寬高數(shù)據(jù)進(jìn)行判斷檢測(cè)
通用算法判斷

if(react1.offsetLeftreact2.offsetLeft&&
   react1.offsetTopreact2.offsetTop
){
 console.log("碰撞成功")
}

如下:圖中的 x 既是 offsetLeft , y 既是 offsetTop;矩形的寬和高既是 offsetWidth 、offsetHeight

2.圓形與圓形的碰撞
核心理念
通過(guò)判斷任意兩個(gè)圓形的圓心距離是否小于兩圓半徑之和,若小于則為碰撞。
通用算法

|AB|=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2))

概念模型

3.圓形與矩形之間的碰撞
核心理念
通過(guò)找出矩形上離圓心最近的點(diǎn),然后通過(guò)判斷該點(diǎn)與圓心的距離是否小于圓的半徑,若小于則為碰撞。改點(diǎn)的位置可以通過(guò)獲取矩形左上角的坐標(biāo)位置和元素的寬高來(lái)進(jìn)行數(shù)據(jù)計(jì)算。
通用算法

var distance=Math.sqrt(Math.pow(closestPoint.x-x1,2)+Math.pow(closestPoint.y-y1,2));
if(distance

概念模型

4.圓形與旋轉(zhuǎn)矩形之間的碰撞
核心理念
即使矩形以其中心為旋轉(zhuǎn)軸進(jìn)行了旋轉(zhuǎn),但是判斷它與圓形是否發(fā)生碰撞的本質(zhì)還是找出矩形上離圓心的最近點(diǎn)。但是矩形的邊緣坐標(biāo)需要進(jìn)行一個(gè)數(shù)據(jù)轉(zhuǎn)換,通過(guò)這個(gè)旋轉(zhuǎn)的角度值計(jì)算轉(zhuǎn)換后的位置
通用算法(同上)

var distance=Math.sqrt(Math.pow(closestPoint.x-x1,2)+Math.pow(closestPoint.y-y1,2));
if(distance

概念模型

5.矩形與障礙物之間的碰撞(地圖碰撞算法)
核心理念
將整個(gè)地圖進(jìn)行數(shù)據(jù)化,劃分為一個(gè)矩形的地圖,地圖的每個(gè)基本單位是一個(gè)矩形區(qū)域。地圖中所有可能參與碰撞的物體都要是基本單位大小的整數(shù)倍,地圖中參與檢測(cè)的對(duì)象都存儲(chǔ)著自身所在格子的坐標(biāo),兩個(gè)物體在同一格才為碰撞。
通用算法

//標(biāo)記為0的可以通過(guò),1的不可以通過(guò)既是障礙物
var map=[
    [1,1,1,1,1,1,1,1,0],
    [1,0,1,0,1,0,0,0,1],
    [1,0,0,0,1,0,1,1,0],
    [1,1,0,0,0,0,0,1,0],
    [1,1,1,1,1,1,1,1,1],
]
//設(shè)置角色的初始位置
player={left:2,top:2}
//下面就要用到A*尋路算法進(jìn)行判斷檢測(cè)碰撞了
......

概念模型

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96355.html

相關(guān)文章

  • 簡(jiǎn)析 js 碰撞檢測(cè)原理算法實(shí)現(xiàn)

    摘要:碰撞檢測(cè)邊界檢測(cè)在前端游戲,以及涉及拖拽交互的場(chǎng)景應(yīng)用十分廣泛。這就涉及到碰撞檢測(cè)或者叫邊界檢測(cè)的問(wèn)題了。若四邊均未發(fā)生重合,則未發(fā)生碰撞,反之則發(fā)生碰撞。目前業(yè)務(wù)有遇到碰撞需求,所以抽時(shí)間整理了下。 碰撞檢測(cè)(邊界檢測(cè))在前端游戲,以及涉及拖拽交互的場(chǎng)景應(yīng)用十分廣泛。 那么啥叫碰撞?JavaScript 又是如何檢測(cè) DOM 發(fā)生碰撞的呢? 碰撞,顧名思義,就是兩個(gè)物體碰撞在了一起,...

    Miyang 評(píng)論0 收藏0
  • 簡(jiǎn)析 js 碰撞檢測(cè)原理算法實(shí)現(xiàn)

    摘要:碰撞檢測(cè)邊界檢測(cè)在前端游戲,以及涉及拖拽交互的場(chǎng)景應(yīng)用十分廣泛。這就涉及到碰撞檢測(cè)或者叫邊界檢測(cè)的問(wèn)題了。若四邊均未發(fā)生重合,則未發(fā)生碰撞,反之則發(fā)生碰撞。目前業(yè)務(wù)有遇到碰撞需求,所以抽時(shí)間整理了下。 碰撞檢測(cè)(邊界檢測(cè))在前端游戲,以及涉及拖拽交互的場(chǎng)景應(yīng)用十分廣泛。 那么啥叫碰撞?JavaScript 又是如何檢測(cè) DOM 發(fā)生碰撞的呢? 碰撞,顧名思義,就是兩個(gè)物體碰撞在了一起,...

    Markxu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<