加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP确定距离

发布时间:2020-12-13 17:19:19 所属栏目:PHP教程 来源:网络整理
导读:我有一大堆30×100代表一个足球场.我让玩家继续前进.然而,当球投掷时,我需要确定其他球员是否在轨迹的/ -1范围内以可能拦截传球. 由于一些(和大多数)传球被对角抛出,我很难弄清楚如何确定一个算法来评估这样的事情. 我的领域看起来像 1 2 3 4 5 6 7 ...23456
我有一大堆30×100代表一个足球场.我让玩家继续前进.然而,当球投掷时,我需要确定其他球员是否在轨迹的/ -1范围内以可能拦截传球.

由于一些(和大多数)传球被对角抛出,我很难弄清楚如何确定一个算法来评估这样的事情.

我的领域看起来像

1 2 3 4 5 6 7 ...
2
3
4
5
6
7
...

字符只能从积分器移动(因此每个时刻都有一组坐标,如(3,2)或(20,90).

什么是最简单的方法来判断一个球员是否在我的传球轨迹的某个范围内(比如传球从(2,4)到(30,15))?

解决方法

所以你有一个($x0,$y0)的传球手,如果没有人抓住传球($x1,$y1),传球将会降低的位置,以及($x,$y)的潜在接球手.你想找出($x,$y)接收器与($x0,$y0)到($x1,$y1)之间的距离.

这是由这个等式给出的:

$d = abs( ( $x1 - $x0 ) *  ( $y0 - $y ) - ( $x0 - $x ) * ($y1 - $y0 ) ) / 
    sqrt( pow( $x1 - $x0,2 ) + pow ($y1 - $y0,2 ) );

你可以找到一个派生here.

然而,这只能到达(无限长)线的距离,这可能在包含传球的线段之外.要得到正确的答案,请参阅Grumdrig的答案:Shortest distance between a point and a line segment

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读