【发布时间】:2021-03-07 21:48:41
【问题描述】:
我在 Travian 游戏中创建了一个脚本来测量村庄之间的距离 我的代码可以正常工作,但仅适用于特定分区。因为有第五个元素 ($X1, $Y1, $X2, $Y2) 是地图的大小
示例: 如果所有 ($X1,$Y1,$X2,$Y2) 数字小于 100,例如 ( 99 , 1 , -85 , -55 , 0 , 13 ... 等 ) 并且地图大小为 200 (最大 200,- 200) 它工作正常..
这是代码:
<?php
$distance = round(sqrt(pow(bcsub($X1, $X2,1),2)+pow(bcsub($Y1,$Y2,1),2)),1) ;
?>
==the result of==
$X1 = 66
$Y1 = 55
$X2 = 44
$Y2 = 33
is (31.1)
但如果地图大小为 200(最大 200,-200)并且:-
- 我选择一个大于 100 的数字
- 其中一个数字是负数
结果不正确
==the result of==
$X1 = 101
$Y1 = 160
$X2 = 190
$Y2 = -194
is (365)
And the correct one is (100.6)
http://travian.kirilloid.ru/distance.php#cc=101,160,190,-194&srv=1.45&size=200&spd=7&art=1
(199, 199) 处的点与 (-199, -199) .. 相邻,它们之间的距离为 (4.2) .. 在我的代码中给了我 (562.9) ...强>
请问我该如何解决这个问题:(
【问题讨论】:
-
我似乎从基本代数中记住了这一点:a²+b²=c²。换句话说,如果您知道 x(水平)和 y(垂直),您可以计算斜边,即它们之间的距离。平方根 (x²+y²)=斜边
-
@PHP 大师:这是毕达哥拉斯定理。要使此公式起作用,最短边的角度需要为 90 度
-
当您的公式正确时,地图的大小是多少?
-
我假设地图是二维的?如果它像地球一样圆,那么它就行不通了。如果它是二维的,那么您可以在 x 和 y 的笛卡尔坐标系上进行操作,并且勾股定理可以正常工作。
-
(199, 199) 处的点与 (-199, -199) 相邻 .. 它们之间的距离是 (4.2) .. 在我的代码中给了我 (562.9) ...