2012-01-05 86 views
2

(這個問題是具體到PHP,我知道這是在其他語言中討論,但我在PHP中實現它的麻煩。)座標旋轉在PHP

我試圖旋轉x &要放置在旋轉圖像上的要素的y座標。

$x & $y是圖像旋轉前塊的原始x,y座標。

$width2 & $height2是旋轉的中心(它是圖像的中心)。

$sin & $cos是正弦&餘弦,其與sin($radians)cos($radians)上旋轉(背景)圖像被旋轉(弧度)的程度得到

function RotatePoints($x,$y,$width2,$height2,$sin,$cos) 
    { 
    // translate point back to origin: 
    $x -= $width2; 
    $y -= $height2; 

    // rotate point 
    $x = $x * $cos - $y * $sin; 
    $y = $x * $sin + $y * $cos; 

    // translate point back: 
    $x += $width2; 
    $y += $height2; 

    return array($x,$y); 
    } 

推測這個功能應該得到我考慮了旋轉的新座標。但是定位相當遙遠。

我在做什麼錯?

回答

3

當你計算的旋轉,在你的代碼,您應該使用其他變量:

$x = $x * $cos - $y * $sin; 
$y = $x * $sin + $y * $cos; 

$ x由第一方程式修改,那麼您使用的是第二$ x的值不正確。

更改爲:

$temp_x = $x * $cos - $y * $sin; 
$temp_y = $x * $sin + $y * $cos; 
+0

哇!那是一個學校男孩的錯誤! *尷尬*我會改變它,讓你知道,如果這可以解決問題。謝謝。 – Alasdair 2012-01-05 12:52:16

+0

它工作。再次感謝! – Alasdair 2012-01-05 13:48:11

+0

@Alasdair:不客氣。 – Toto 2012-01-05 14:14:53