PHP确定距离
我有一大堆30×100代表一个足球场.我让玩家继续前进.然而,当球投掷时,我需要确定其他球员是否在轨迹的/ -1范围内以可能拦截传球. 由于一些(和大多数)传球被对角抛出,我很难弄清楚如何确定一个算法来评估这样的事情. 我的领域看起来像 1 2 3 4 5 6 7 ...
2
3
4
5
6
7
... 字符只能从积分器移动(因此每个时刻都有一组坐标,如(3,2)或(20,90). 什么是最简单的
我有一大堆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
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。