2012-06-27 70 views
1
$degree = 179; 
$aX = $valueB + ($valueA - $aY)/tan(deg2rad($degree)); 

返回742.710038369爲$ AX黃褐色(deg2rad())返回180度之間奇數值到360

但當$度爲180;

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

回報-8.1656196766E + 15爲$ AX

和類似值一路361當它完成一個整圈,然後再次返回857.289961631爲$斧頭。

我該如何解決這個問題,我需要轉換不同的值還是改變別的東西?

在此先感謝您的答案!

編輯;

$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); 
+0

'tan(M_PI)'應該是0,但它實際上是-1.2246063538224E-16,這要感謝四捨五入。 – cmbuckley

+1

@HighPerformanceMark,http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/它應該確實會拋出一個異常或... –

+0

我會說你正在獲得'PHP'版本的加號和更少的無限.. –

回答

0

正如其他評論指出的,除以0要麼給或應該給出一個錯誤,當結果應該是一個普通的數字。目前的代碼片段,如果確實存在可能的動機,看起來像homogeneous coordinates的應用程序,它代表投影幾何中的方向。將方向表示爲具有線性表達式的線的斜率僅在斜率不垂直時才起作用。在齊次座標系中,您可以很容易地表示這些方向,並且您可以在這些方向附近獲得數值穩定性以便啓動

這就是說,我不能搞清楚現在的代碼片段可能是什麼應用程序,因此這個答案是否相關。