php中实现矩阵的碰撞检测

<?php
	class Rect{
		private $x;
		private $y;
		private $width;
		private $height;
		function __construct($x,$y,$width,$height){
			$this->x = $x;
			$this->y = $y;
			$this->width = $width;
			$this->height = $height;
		}
		function panDuan($px,$py){
			$x1 = $this->x;
			$x2 = $this->x+$this->width;
			$y1 = $this->y;
			$y2 = $this->y+$this->height;
			if (($px>=$x1) && ($px<=$x2) && ($py>=$y1) && ($py<= $y2)) {
				echo "in";
			}else{
				echo "over";
			}
		}

		function rectArc($dx1,$dx2){
			//第一个矩形的左上角的x,y,width,height;
			$x1 = $dx1->x;
			$y1 = $dx1->y;
			$w1 = $dx1->width;
			$h1 = $dx1->height;

			//第二个矩形的左上角的x,y,width,height;
			$x2 = $dx2->x;
			$y2 = $dx2->y;
			$w2 = $dx2->width;
			$h2 = $dx2->height;

			//两个矩形的宽度的一半
			$heng = $w1/2+$w2/2;

			//两个矩形的高度的一半
			$shu = $h1/2+$h2/2;

			//第一个矩形的中心的x,y值
			$jxx1 = $x1+$w1/2;
			$jxy1 = $y1+$h1/2;

			//第二个矩形的中心的x,y值
			$jxx2 = $x2+$w2/2;
			$jxy2 = $y2+$h2/2;

			//判断是否横碰撞
			$bool1 = abs($jxx1-$jxx2)<=$heng;
			//判断是否竖碰撞
			$bool2 = abs($jxy1-$jxy2)<=$shu;
			if ($bool1&&$bool2) {
				echo "碰撞";
			}else{
				echo "不碰撞";
			}
		}

	}
	$r1 = new Rect(1,1,2,2);
	$r2 = new Rect(4,4,1,1);
	$r1->rectArc($r1,$r2);
?>



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值