js的碰撞检测

二维平面内的圆和矩形碰撞
原理
找到圆心与矩形的最近点,计算该点到圆心的距离与圆的半径进行比较。

方法
首先定义最接近点的x坐标,y坐标,圆心坐标,矩形左边和上边到外容器的距离,矩形的宽高。

var closest_x , closest_y; 
var circle_x ,circle_y;
var rectangle_x , rectangle_y , rectangle_w , rectangle_h;

先分析最近点的x坐标
在这里插入图片描述
当圆心在矩形的左边时
最接近点的x坐标为矩形左边据外容器的距离。
即 closest_x = rectangle_x ;
在这里插入图片描述
当圆心在矩形的右边时
最接近点的x坐标为矩形左边到外容器的距离+矩形的宽。
即 closest_x = rectangle_x + rectangle_w ;
在这里插入图片描述
当圆心在矩形的正上方或正下方时。
最近点的x坐标 = 圆心的x坐标
即 closest_x = circle_x ;

最近点的y轴坐标

和分析x坐标的思路是一样的。
在这里插入图片描述
当圆心在矩形上面时
最近点的y轴坐标 = 矩形上边到外容器的距离 。
即 closest_y = rectangle_y ;
在这里插入图片描述
当圆心在矩形下面时
最近点的y轴坐标 = 矩形上边到外容器的距离 + 矩形的高度。
即 closest_y = rectangle_y + rectangle_h ;
在这里插入图片描述

当圆心在矩形的正左右两边时
最近点的y坐标 = 圆心的y坐标
即 closest_y = circle_y ;

这样最近点的x和y坐标我们都找到了
最后用两点之间的距离公式得到距离在与圆的半径进行比较
如果小于圆的半径就说明发生碰撞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值