1
$degree = 179;
$aX = $valueB + ($valueA - $aY)/tan(deg2rad($degree));

返回 742.710038369 作为 $aX

但是当 $degree 是 180 时;

$degree = 180;
$aX = $valueB + ($valueA - $aY)/tan(deg2rad($degree));

返回 -8.1656196766E+15 作为 $aX

当它完成一个完整的转弯并再次返回 857.289961631 作为 $aX 时,类似的值一直到 361。

我该如何解决这个问题,我是否需要转换不同的值或更改其他内容?

提前感谢您的回答!

编辑;

$degree = 180;
$valueA = 800;
$valueB = 800;

$aY = ($valueB/64) * (64) -1;
$aX = $valueB + ($valueA - $aY)/tan(deg2rad($degree));

$aY = round($aY/64,0);
$aX = round($aX/64,0);
4

1 回答 1

0

正如其他评论指出的那样,当结果应该是普通数字时,除以 0 会给出或应该给出错误。目前的代码片段,如果确实有可能的动机,看起来像齐次坐标的应用程序,它表示投影几何中的方向。仅当斜率不垂直时,使用线性表达式将方向表示为直线的斜率。在齐次坐标中,您可以轻松地表示这些方向,并且您可以在这些方向附近获得数值稳定性以启动。

也就是说,我无法弄清楚当前代码片段可能属于哪个应用程序,以及这个答案是否相关。

于 2012-11-04T17:22:30.267 回答